意義:在登錄微信小程序的時(shí)候枚冗,有時(shí)候會(huì)需要獲取用戶的個(gè)人信息缓溅,如頭像,昵稱等官紫,后端會(huì)記錄下來用戶的登錄記錄肛宋,方便用戶下次記錄不需要再登錄,增強(qiáng)了用戶體驗(yàn)束世,便捷使用酝陈,而token就是用戶的唯一標(biāo)識(shí),用戶第一次登錄微信小程序的時(shí)候毁涉,會(huì)彈出一個(gè)授權(quán)框沉帮,提示獲取用戶授權(quán),授權(quán)成功后,會(huì)有一個(gè)用戶的code(微信小程序定義的值)穆壕,然后前端開發(fā)人員將這個(gè)code發(fā)送給后臺(tái)待牵,后臺(tái)會(huì)返回一個(gè)token值,接下來用戶再次登錄的時(shí)候就不需要授權(quán)了喇勋,后臺(tái)會(huì)對(duì)比用戶的token值缨该,匹配,就允許訪問數(shù)據(jù)川背,否則贰拿,就無法訪問數(shù)據(jù)。
獲取code值
wx.login({
success: res => {
console.log(res);//res.code:"*************"
// 發(fā)送 res.code 到后臺(tái)換取token
}
})
獲取用戶信息
open-type='getUserInfo'
在標(biāo)簽中加入這個(gè)方法
<button bindgetuserinfo='click' open-type='getUserInfo'>獲取token</button>
wx.getUserInfo({
success: res =>{
console.log(res)
}
})
將需要進(jìn)行請(qǐng)求ajax的方法進(jìn)行封裝并且輸出
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
}
發(fā)送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并且存儲(chǔ)到了本地膨更,下次用戶再登錄的時(shí)候就不需要再次獲取授權(quán)了。