微信小程序 - 用戶授權登錄

需求:微信小程序登錄綁定系統賬號互通

https://developers.weixin.qq.com/community/operate/doc/000640bb8441b82900e89f48351401
小程序內用戶帳號登錄規范調整和優化建議

之前微信授權登錄時是直接可以通過getUserInfo接口 彈出授權彈窗。由于微信官方修改了 getUserInfo 接口,所以現在無法實現一進入微信小程序就彈出授權窗口,只能通過 button 去觸發

微信的官方解釋如下:

https://developers.weixin.qq.com/community/develop/doc/0000a26e1aca6012e896a517556c01

小程序登錄

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

說明:

  1. 調用 wx.login() 獲取 臨時登錄憑證code ,并回傳到開發者服務器。
  2. 調用 auth.code2Session 接口,換取 用戶唯一標識 OpenID會話密鑰 session_key

之后開發者服務器可以根據用戶標識來生成自定義登錄態,用于后續業務邏輯中前后端交互時識別用戶身份。

注意:

  1. 會話密鑰 session_key 是對用戶數據進行 加密簽名 的密鑰。為了應用自身的數據安全,開發者服務器不應該把會話密鑰下發到小程序,也不應該對外提供這個密鑰
  2. 臨時登錄憑證 code 只能使用一次

小程序端 wx.login 獲取code 并 wx.request 提交 code 給己方服務器
服務器 提交Appid + appSecret + code 到微信方服務器 獲取 session_key & openid
服務器 根據 session_key & openid 生成 3rd_session(微信方提出的基于安全性的考慮,建議開發者不要將openid等關鍵性信息進行數據傳輸) 并返回 3rd_session 到小程序端
小程序端 wx.setStorage 存儲 3rd_session 在后續用戶操作需要憑證時 附帶該參數
小程序端 wx.getUserInfo 獲取用戶信息 + wx.getStorage 獲取 3rd_session 數據后,一并 wx.request 提交給己方服務器
服務器 SQL 用戶數據信息更新

后端:
--- 登錄憑證校驗
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html

--- 通過該接口生成的小程序碼,永久有效,數量暫無限制
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html

后端緩存的,考慮個情況,切換微信賬號登錄

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 簡介: 微信登陸,在新建一個微信小程序Hello World項目的時候,就可以看到項目中出現了我們的微信頭像,其實...
    大海_e68f閱讀 1,837評論 1 4
  • 背景 微信小程序的使用可以快速的基于場景進行用戶圈的建立推廣,其中根據業務需要使用用戶信息以及授權過程,主要用到的...
    極樂叔閱讀 1,209評論 1 4
  • 通過 wx.login() 獲取到用戶登錄態之后,需要維護登錄態。開發者要注意不應該直接把 session_key...
    奇點一氪閱讀 7,181評論 2 4
  • 很多人可能一輩子都不一定會知道自己的臨界點在哪里,很多人也許很年輕的時候就突破了自己的能力界限,步入開掛升級的人生...
    火球君閱讀 829評論 0 1
  • 3.26 周四 晴 今天7:30起床,洗漱加做早餐,到8:20,時間還是長了一點,要加快速度。 魚丸是昨晚打好的,...
    YZ練習冊閱讀 174評論 0 0