微信小程式的授權登入
首先你需要知道微信小程式官網提供的授權登入流程,附上網址(官網流程圖)
分析得到
前端(即小程式端)需要做的事情。:
- 通過wx.login() 擷取code值,
- 通過後端提供的API接口,使用 wx.request把code值發送後端
- 通過wx.request的success方法,接受到後端傳回的自定義登入态,并儲存起來,可能别的API接口需要登入态。
後端需要做的事情。
- 後端接受到code之後,通過微信伺服器接口來換取oppenid(使用者唯一辨別)、session_key(會話密鑰)和UnionID,主要是oppenid與session_key。
- 後端自定義登入态與oppenid、session_key關聯。
- 後端傳回自定義登入态給前端。
注意點
- 擷取使用者頭像、昵稱、性别及地區資訊,需要使用wx.getUserProfile接口
- 如果使用者登入成功之後,再次調用wx.login接口,使用者的session_key(會話密鑰)可能會被更新而緻使舊session_key失效,進而導緻校驗失敗,具體請看微信小程式官網介紹----會話密鑰 session_key 有效性這一介紹。網址連結,
部分代碼
getInfo() {
wx.getUserProfile({
lang: 'zh_CN',
desc: '用于完善會員資料',
success: async res => {
let code = await this.getCode()
wx.request({
url:'',
data:{
code:code
},
method:'get',
success:res=>{
// 從res裡面擷取登入态,并儲存待用
}
})
}
})
},
getCode() {
return new Promise((resolve, reject) => {
wx.login({
success: res => {
resolve(res.code)
}
})
})
},