小程序登錄
小程序可以通過微信官方提供的登錄能力方便地獲取微信提供的用戶身份標識,快速建立小程序內的用戶體系。
登錄流程時序
wx.login() |
獲取 臨時登錄憑證code ,並回傳到開發者服務器 |
|
auth.code2Session |
換取 用戶唯一標識 OpenID 和 會話密鑰 session_key |
|
UnionID 機制 |
互通的用戶標識 | 如果開發者擁有多個移動應用、網站應用、和公眾帳號(包括小程序),可通過 UnionID 來區分用戶的唯一性, 因為只要是同一個微信開放平台帳號下的移動應用、網站應用和公眾帳號(包括小程序),用戶的 UnionID 是唯一的。 換句話說,同一用戶,對同一個微信開放平台下的不同應用,UnionID是相同的 小程序遷移到其他的開放平台下,unionID 是會改變的,而 openID 是不變的 |
之后開發者服務器可以根據用戶標識來生成自定義登錄態,用於后續業務邏輯中前后端交互時識別用戶身份
開發者建議
步驟 | 作用 | 備注 |
1、當用戶打開小程序時訪問第一個頁面時, 先通過 wx.login,獲取用戶 openID, |
開發者拿到 openID 可以建立自身的帳號 ID | 無需彈框授權 |
2、拿到 openID 后,判斷是新用戶還是老用戶 | 老用戶,可以直接登錄 新用戶,可先在首頁展示信息服務,再引導下一步操作 |
|
3、當需要獲取用戶頭像昵稱的時候,對用戶展示一個登錄頁面 | 這個頁面只有一個最重要的操作,引導用戶進行登錄 在頁面中加入一個 button 按鈕,並將 open-type 屬性設置為getUserInfo |
|
授權登錄(頭像,昵稱等)
授權方式 | 解釋 | 建議 |
一次性授權 | 常規寫法, 需要獲取用戶公開信息(頭像,昵稱等)時,判斷調取授權登錄接口, 但此方法如果不經處理的話,用戶如果拒絕授權或者刪除該微信小程序后,需要重新調取並獲取授權 |
此方法用戶體驗較差,不建議; × |
永久授權 | 在不必要使用用戶公開信息(頭像,昵稱等)時,不調取授權登錄接口, 只有在必要的時候再去判斷調取授權登錄接口並把獲取到的用戶公開信息存入數據庫, 這樣在每次登錄時直接先運行指定函數從數據庫索取需要的用戶公開信息(頭像,昵稱等)即可, 此方法在刪除小程序后不用再次去授權登錄(因為在用戶第一次授權登錄時已經把用戶的公開信息存入數據庫了以后直接向數據庫索取即可) |
建議使用;√ 可設置【更新資料】的按鈕 |
不授權 | 不需要授權登錄獲取用戶公開信息(頭像,昵稱等), 使用wx.login獲取用戶code並傳入后台,后台可以通過用戶的code值向微信要openID,然后通過openID就可以識別到指定用戶, 如果需要的話,前端要顯示的頭像、昵稱等這些信息可以使用自定義可編輯的功能, 當然,也可通過<open-data type=“userAvatarUrl”></open-data><open-data type=“userNickName”></open-data> 小程序提供的這個組件顯示用戶的頭像及昵稱(不過這個組件只有顯示功能), 用戶如果想直接使用自己的頭像昵稱,也可以自行授權(比如添加個引導按鈕什么之類的), |
建議使用;√ |
參考文檔:https://developers.weixin.qq.com/community/develop/article/doc/000a4e9d86002857cf687226851413