天天看點

微信小程式的一鍵授權登入。

微信小程式的授權登入

首先你需要知道微信小程式官網提供的授權登入流程,附上網址(官網流程圖)

分析得到

前端(即小程式端)需要做的事情。:

  1. 通過wx.login() 擷取code值,
  2. 通過後端提供的API接口,使用 wx.request把code值發送後端
  3. 通過wx.request的success方法,接受到後端傳回的自定義登入态,并儲存起來,可能别的API接口需要登入态。

後端需要做的事情。

  1. 後端接受到code之後,通過微信伺服器接口來換取oppenid(使用者唯一辨別)、session_key(會話密鑰)和UnionID,主要是oppenid與session_key。
  2. 後端自定義登入态與oppenid、session_key關聯。
  3. 後端傳回自定義登入态給前端。

注意點

  1. 擷取使用者頭像、昵稱、性别及地區資訊,需要使用wx.getUserProfile接口
  2. 如果使用者登入成功之後,再次調用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)
        }
      })
    })
  },
           

繼續閱讀