基于 egg.js 实现后端接口。
- 小程序启动时,请求 csrfToken 备用。
onLaunch(() => {
uni.request({
url: 'https://www.feizhaojun.com/api/',
success: (res) => {
uni.setStorageSync('csrfToken', (res.cookies[0].match(/csrfToken=(.*?); path=/))[1])
}
})
})
- 携带 appId 请求登陆接口,封装 login 方法支持回调
const login = (cb?: Function) => {
uni.login({
success(res: any) {
if (res?.code) {
uni.request({
url: 'https://www.feizhaojun.com/api/mp/login',
method: 'POST',
header: {
cookie: 'csrfToken=' + uni.getStorageSync('csrfToken'),
'x-csrf-token': uni.getStorageSync('csrfToken'),
},
data: {
code: res.code,
appId: 'wx1d9f08bd5214d332'
},
success(res: any) {
if (res.data.code) {
uni.showToast({
icon: 'none',
title: "系统错误"
})
return
}
uni.setStorageSync('user', JSON.stringify(res.data.data))
console.log(2, cb)
cb && cb()
},
fail() {},
})
}
},
fail(err) {
console.log(err)
},
})
}
export default login
- 在需要登陆的时机调用
onReady(() => {
const user: any = JSON.parse(uni.getStorageSync('user') || null)
if (!user?.token) {
login(init)
} else {
init()
}
})