对接api3
This commit is contained in:
+9
-6
@@ -2,9 +2,11 @@
|
||||
|
||||
import Taro from '@tarojs/taro'
|
||||
import { useRef, useState } from 'react'
|
||||
import {BASE_URL} from '@/common/constant'
|
||||
import {BASE_URL, WX_APPID} from '@/common/constant'
|
||||
import useUserInfo from "./useUserInfo"
|
||||
import qs from 'qs';
|
||||
|
||||
|
||||
type Params = {
|
||||
code: string|null
|
||||
success: true|false
|
||||
@@ -118,7 +120,7 @@ export const useRequest = (options:option = {
|
||||
|
||||
const stateRef = useRef({...params})
|
||||
const [state, setState] = useState({...stateRef.current})
|
||||
|
||||
const {removeToken} = useUserInfo()
|
||||
// 请求函数
|
||||
const fetchData = async (sub_options?:any) => {
|
||||
stateRef.current.loading = true
|
||||
@@ -139,6 +141,7 @@ export const useRequest = (options:option = {
|
||||
...{
|
||||
header: {
|
||||
"Platform": 6,
|
||||
"Appid": WX_APPID,
|
||||
"Authorization": token || stateRef.current.token,
|
||||
}
|
||||
},
|
||||
@@ -167,10 +170,10 @@ export const useRequest = (options:option = {
|
||||
title: `错误:${showStatus(statusCode)}`
|
||||
})
|
||||
if (statusCode === 401) {
|
||||
//未登录
|
||||
// Taro.reLaunch({
|
||||
// url: '/pages/login/index'
|
||||
// })
|
||||
removeToken()
|
||||
Taro.reLaunch({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
import { useEffect, useState } from "react"
|
||||
import { WX_APPID } from "@/common/constant"
|
||||
import useUserInfo from "./useUserInfo"
|
||||
import Taro, { useRouter } from "@tarojs/taro"
|
||||
import { Login } from "@/api/login"
|
||||
|
||||
|
||||
export default () => {
|
||||
const {setToken, setSessionKey, setUserInfo, userInfo} = useUserInfo()
|
||||
|
||||
useEffect(() => {
|
||||
console.log('userInfo::',userInfo.token)
|
||||
}, [userInfo])
|
||||
|
||||
//登录请求
|
||||
const {fetchData} = Login()
|
||||
const loginRequest = async (code) => {
|
||||
const {data, success} = await fetchData({js_code: code})
|
||||
if(success) {
|
||||
setToken(data.token)
|
||||
setSessionKey(data.session_key)
|
||||
} else {
|
||||
Taro.showToast({
|
||||
title:'登录失败',
|
||||
icon:"none"
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
//微信登录
|
||||
const wxLogin = () => {
|
||||
Taro.login({
|
||||
success: function async (res) {
|
||||
if (res.code) {
|
||||
loginRequest(res.code)
|
||||
} else {
|
||||
console.log('登录失败!' + res.errMsg)
|
||||
}
|
||||
},
|
||||
fail: function(e) {
|
||||
console.log('登录失败!::',e)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const router = useRouter()
|
||||
//登录加checkLogin检查
|
||||
const checkLogin = () => {
|
||||
if(!userInfo.token) {
|
||||
wxLogin()
|
||||
if(router.path != '/pages/index/index') {
|
||||
Taro.reLaunch({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}
|
||||
} else {
|
||||
Taro.checkSession({
|
||||
fail () {
|
||||
wxLogin()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//获取用户头像等信息数据
|
||||
const getUserInfo = () => {
|
||||
Taro.getUserProfile({
|
||||
desc: '用于完善会员资料',
|
||||
success: (res) => {
|
||||
Taro.request({
|
||||
url: 'https://dev.zzfzyc.com/lymarket/v1/mall/user/decrypt',
|
||||
method: 'POST',
|
||||
data: {
|
||||
session_key: userInfo.sessionkey,
|
||||
raw_data: res.rawData,
|
||||
signature: res.signature,
|
||||
encrypted_data: res.encryptedData,
|
||||
iv: res.iv
|
||||
},
|
||||
header: {
|
||||
platform: 6,
|
||||
Authorization: userInfo.token,
|
||||
Appid: WX_APPID
|
||||
},
|
||||
success: (e) => {
|
||||
setUserInfo({})
|
||||
},
|
||||
fail: (e) => {
|
||||
console.log(e)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
checkLogin,
|
||||
wxLogin,
|
||||
getUserInfo
|
||||
}
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
import { useEffect, useState } from "react"
|
||||
import { WX_APPID } from "@/common/constant"
|
||||
import useUserInfo from "./useUserInfo"
|
||||
|
||||
|
||||
export default () => {
|
||||
const {setToken, setSessionKey, setUserInfo} = useUserInfo()
|
||||
|
||||
const [loginState, setLoginState] = useState({
|
||||
session_key: '',
|
||||
token: '',
|
||||
userInfo: ''
|
||||
})
|
||||
|
||||
const getToken = () => {
|
||||
Taro.login({
|
||||
success: function (res) {
|
||||
if (res.code) {
|
||||
console.log('number::', res.code)
|
||||
Taro.request({
|
||||
url: 'https://dev.zzfzyc.com/lymarket/v1/mall/login',
|
||||
method: 'POST',
|
||||
data: {
|
||||
js_code: res.code,
|
||||
},
|
||||
header: {
|
||||
platform: 6,
|
||||
Appid: WX_APPID
|
||||
},
|
||||
success: (e) => {
|
||||
let {data} = e.data
|
||||
setLoginState({
|
||||
...loginState,
|
||||
session_key: data.session_key,
|
||||
token: data.token
|
||||
})
|
||||
setToken(data.token)
|
||||
setLoginState(data.session_key)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('登录失败!' + res.errMsg)
|
||||
}
|
||||
},
|
||||
fail: function(e) {
|
||||
console.log('e::',e)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const getUserInfo = () => {
|
||||
Taro.getUserProfile({
|
||||
desc: '用于完善会员资料',
|
||||
success: (res) => {
|
||||
Taro.request({
|
||||
url: 'https://dev.zzfzyc.com/lymarket/v1/mall/user/decrypt',
|
||||
method: 'POST',
|
||||
data: {
|
||||
session_key: loginState.session_key,
|
||||
raw_data: res.rawData,
|
||||
signature: res.signature,
|
||||
encrypted_data: res.encryptedData,
|
||||
iv: res.iv
|
||||
},
|
||||
header: {
|
||||
platform: 6,
|
||||
Authorization: loginState.token,
|
||||
Appid: WX_APPID
|
||||
},
|
||||
success: (e) => {
|
||||
setUserInfo({})
|
||||
},
|
||||
fail: (e) => {
|
||||
console.log(e)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
return {
|
||||
getToken,
|
||||
getUserInfo
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ import { useDispatch, useSelector } from 'react-redux'
|
||||
import { CLEAR_SESSIONKEY, SET_USERINFO, SET_TOKEN, SET_SESSIONKEY, CLEAR_USERINFO, CLEAR_TOKEN} from '@/constants/userInfo'
|
||||
import {DataParam, UserParam} from '@/reducers/userInfo'
|
||||
export default () => {
|
||||
const user = useSelector((state:DataParam) => state.userInfo) as DataParam
|
||||
const userInfo = useSelector((state:DataParam) => state.userInfo) as DataParam
|
||||
const dispatch = useDispatch()
|
||||
|
||||
const setToken = (token: string) => {
|
||||
@@ -36,6 +36,6 @@ export default () => {
|
||||
removeUserInfo,
|
||||
removeToken,
|
||||
removeSessionKey,
|
||||
user, //响应式数据返回
|
||||
userInfo, //响应式数据返回
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user