意义:在登录微信小程序的时候,有时候会需要获取用户的个人信息,如头像,昵称等,后端会记录下来用户的登录记录,方便用户下次记录不需要再登录,增强了用户体验,便捷使用,而token就是用户的唯一标识,用户第一次登录微信小程序的时候,会弹出一个授权框,提示获取用户授权,授权成功后,会有一个用户的code(微信小程序定义的值),然后前端开发人员将这个code发送给后台,后台会返回一个token值,接下来用户再次登录的时候就不需要授权了,后台会对比用户的token值,匹配,就允许访问数据,否则,就无法访问数据。
获取code值
wx.login({
success: res => {
console.log(res);//res.code:"*************"
// 发送 res.code 到后台换取token
}
})
获取用户信息
open-type='getUserInfo'
在标签中加入这个方法
<button bindgetuserinfo='click' open-type='getUserInfo'>获取token</button>
wx.getUserInfo({
success: res =>{
console.log(res)
}
})
将需要进行请求ajax的方法进行封装并且输出
function myRequest(url, data, success = function () {}, method = 'get') {
wx.request({
url,
data,
method,
header: {
'X-Nideshop-Token': wx.getStorageSync('token')
},
success
});
}
module.exports = {
formatTime: formatTime,
myRequest,
login
}
发送code,拿到token
function login(userInfo, that) {
if (app.global.code) {
console.log(userInfo);
myRequest("https://nideshop.bluej.cn/auth/loginByWeixin", {
code: app.global.code,
userInfo
},
res => {
console.log(res)
wx.setStorageSync('token', res.data.data.token);
that.setData({
token: res.data.data.token
})
wx.setStorageSync('userInfo', res.data.data.userInfo);
},
'post'
)
} else {
// 拿到code
wx.login({
success: res => {
app.global.code = res.code;
// 拿到token
myRequest("https://nideshop.bluej.cn/auth/loginByWeixin", {
code: app.global.code,
userInfo
},
res => {
console.log(res)
wx.setStorageSync('token', res.data.data.token);
that.setData({
token: res.data.data.token
})
},
'post'
)
}
})
}
}
这样就拿到了token并且存储到了本地,下次用户再登录的时候就不需要再次获取授权了。
网友评论