知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們在追求其視覺表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?
您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
微信開發(fā)之小程序登錄相關(guān)的各類ID
發(fā)表時(shí)間:2021-1-5
發(fā)布人:葵宇科技
瀏覽次數(shù):87
最近在實(shí)際業(yè)務(wù)中,為了配合產(chǎn)品同事優(yōu)化小程序的登錄流程,同時(shí)還想通過微信授權(quán)登錄 + 手機(jī)號授權(quán)自動為用戶創(chuàng)建一個(gè)符合基礎(chǔ)用戶服務(wù)體系的業(yè)務(wù)賬戶。從而降低用戶使用產(chǎn)品的鏈路成本。
在溝通過程中,發(fā)現(xiàn)很有必要梳理一下關(guān)于小程序登錄相關(guān)的所謂如何實(shí)現(xiàn)靜默授權(quán)
、如何實(shí)現(xiàn)主動授權(quán)
、如何獲取手機(jī)號
、什么是小程序的 UnionID
的等等衍生問題概念、獲取方式、使用場景。
所以在查閱微信小程序官方文檔、以及網(wǎng)絡(luò)上同行們的文章之后,總結(jié)出了本人對微信小程序登錄相關(guān)的各類ID,以及授權(quán)、登錄的簡單流程做了以下整理。
目錄
- UnionID
- AppID
- OpenID
- 原始ID
- 登錄和授權(quán)
UnionID
- 什么是 UnionID
- 如果開發(fā)者擁有多個(gè)移動應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(包括小程序),可通過 UnionID 來區(qū)分用戶的唯一性,因?yàn)橹灰峭粋€(gè)微信開放平臺帳號下的移動應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(包括小程序),用戶的 UnionID 是唯一的。換句話說,同一用戶,對同一個(gè)微信開放平臺下的不同應(yīng)用,UnionID 是相同的。
-
如何獲取 UnionID
- 需要綁定開發(fā)者賬號的小程序,否則無法獲取到 UnionID
- 調(diào)用接口
wx.getUserInfo
,從解密數(shù)據(jù)中獲取 UnionID。注意本接口需要用戶授權(quán),請開發(fā)者妥善處理用戶拒絕授權(quán)后的情況。(通過wx.getUserInfo
,需要業(yè)務(wù)接口做對應(yīng)的解密處理,純小程序前端無法處理) - 如果開發(fā)者帳號下存在同主體的公眾號,并且該用戶已經(jīng)關(guān)注了該公眾號。開發(fā)者可以直接通過
wx.login
+code2Session
獲取到該用戶UnionID
,無須用戶再次授權(quán)。(code2Session
為服務(wù)端調(diào)用接口) - 用戶在小程序(暫不支持小游戲)中支付完成后,開發(fā)者可以直接通過
getPaidUnionId
接口獲取該用戶的UnionID
,無需用戶授權(quán)。注意:本接口僅在用戶支付完成后5分鐘內(nèi)有效,請開發(fā)者妥善處理。 - 小程序端調(diào)用云函數(shù)時(shí),如果開發(fā)者帳號下存在同主體的公眾號,并且該用戶已經(jīng)關(guān)注了該公眾號,可在云函數(shù)中通過
cloud.getWXContext
獲取UnionID
。 - 小程序端調(diào)用云函數(shù)時(shí),如果開發(fā)者帳號下存在同主體的公眾號或移動應(yīng)用,并且該用戶已經(jīng)授權(quán)登錄過該公眾號或移動應(yīng)用,也可在云函數(shù)中通過
cloud.getWXContext
獲取UnionID
。
-
應(yīng)用建議
- 通過 UnionID 與開發(fā)平臺的唯一性關(guān)系,可以針對同一個(gè) UnionID 在統(tǒng)一的用戶體系關(guān)聯(lián)出唯一用戶的相關(guān)需求。
- 利用 UnionID 可以準(zhǔn)確地幫助品牌篩選出,公眾號矩陣中同時(shí)關(guān)注多個(gè)公眾號的忠誠粉絲。讓品牌更好地了解公眾號矩陣中賬號之間的聯(lián)系,進(jìn)行多個(gè)公眾號之間的聯(lián)動和傳播。
AppID
-
什么是 AppID
- AppID 是小程序的身份證號碼,是微信公眾平臺上的小程序 ID,有了它,微信客戶端才能確定你的小程序“身份”,并使用微信提供的高級接口。
-
如何獲取 AppID
- 常規(guī)方法:小程序后臺查看
- 電腦端,微信公眾平臺登錄小程序賬號
- 進(jìn)入小程序后臺 —「開發(fā)」—「開發(fā)設(shè)置」 查看
- 或者進(jìn)入小程序后臺 —「設(shè)置」 — 「基本設(shè)置」 — 「帳號信息」
- 簡單方法:查看小程序資料
- 手機(jī)端,在微信小程序里搜該小程序名字
- 如圖示例操作即可
- 神秘方法:知道小程序名字
- 電腦端,在微信公眾號文章編輯后臺,選擇插入小程序
- 支持插入任意小程序,適合批量查看小程序的appid,快捷操作 (輸入小程序名字后,再次點(diǎn)擊小程序名字)
- 如圖示例操作即可
- 不管你是小程序開發(fā)者,普通用戶,還是公眾號運(yùn)營者,以上 3 種方法,都可以使用。
- 常規(guī)方法:小程序后臺查看
-
AppSecret
- 什么是 AppSecret : 小程序唯一憑證密鑰,多配合于 AppID 一起使用
- 獲取方式:參考如何獲取 AppID 的常規(guī)方法,在小程序后臺查看
-
應(yīng)用建議
- 在實(shí)現(xiàn)小程序登錄流程時(shí),需要通過 AppID + AppSecret 作為入?yún)⑼ㄟ^業(yè)務(wù)方的 Server 服務(wù)獲取對應(yīng)的用戶信息
- 需要保證 AppSecret 的安全性,避免泄漏
- 在通過業(yè)務(wù)方的 Server 服務(wù)與微信開放平臺進(jìn)行 API 交互時(shí),大多數(shù)情況都需要使用 AppID + AppSecret 作為入?yún)⑦M(jìn)行通信,如推送等業(yè)務(wù)場景
OpenID
- 什么是 OpenID
- OpenID 是這個(gè)用戶在這個(gè)小程序里的唯一標(biāo)識。每個(gè)用戶肯定都有。同一個(gè)用戶在不同的小程序中的 OpenID 是不一樣的。
-
如何獲取 OpenID
- 調(diào)用 wx.login(),獲取臨時(shí) code
- 將獲取到的 code 發(fā)送給后臺換取 openid
-
應(yīng)用建議
- 用 OpenID 作為簡單的用戶唯一標(biāo)識,也可以用它與業(yè)務(wù)用戶體系做關(guān)聯(lián)
- 一些需要調(diào)用 OpenID 作為入?yún)⑽⑿沤涌谛枰褂?/li>
原始 ID
-
什么是原始 ID
- 申請微信小程序時(shí),微信小程序平臺分配的唯一編號
-
如何獲取原始 ID
- 參考如何獲取 AppID 的常規(guī)方法、簡單方法
-
應(yīng)用建議
- 小程序找回、注銷等
- 微信開發(fā)平臺與小程序交互時(shí)需要(如 App 打開小程序)
登錄和授權(quán)
-
登錄和授權(quán)的說明
- 在微信小程序中,登錄和授權(quán)是完全兩個(gè)獨(dú)立的事情。登錄只是通過 wx.login 獲取用戶在此時(shí)使用小程序產(chǎn)生的 code ,需要通過 Server 將 code 通過 auth.code2Session 獲取用戶唯一標(biāo)識。
- 授權(quán)是通過 wx.getUserInfo 來獲取用戶的微信信息,同時(shí)可以通過返回的 vi 等加密數(shù)據(jù)傳給 Server 端,用于解密后存儲或校驗(yàn)業(yè)務(wù)用戶的微信信息。
- 登錄和授權(quán)完全沒有關(guān)系
-
登錄
- 微信小程序登錄:小程序可以通過微信官方提供的登錄能力方便地獲取微信提供的用戶身份標(biāo)識,快速建立小程序內(nèi)的用戶體系。
- 登錄流程時(shí)序
- 說明
- 調(diào)用 wx.login() 獲取 臨時(shí)登錄憑證code ,并回傳到開發(fā)者服務(wù)器。
- 調(diào)用 auth.code2Session 接口,換取 用戶唯一標(biāo)識 OpenID 和 會話密鑰 session_key。
- 之后開發(fā)者服務(wù)器可以根據(jù)用戶標(biāo)識來生成自定義登錄態(tài),用于后續(xù)業(yè)務(wù)邏輯中前后端交互時(shí)識別用戶身份。
- 注意
- 會話密鑰 session_key 是對用戶數(shù)據(jù)進(jìn)行 加密簽名 的密鑰。為了應(yīng)用自身的數(shù)據(jù)安全,開發(fā)者服務(wù)器不應(yīng)該把會話密鑰下發(fā)到小程序,也不應(yīng)該對外提供這個(gè)密鑰。
- 臨時(shí)登錄憑證 code 只能使用一次
-
用戶信息授權(quán)
- 微信小程序用戶信息授權(quán)
- 調(diào)用
wx.getUserInfo
- 需要對
button
設(shè)置open-type="getUserInfo"
的屬性 - 將用于加密的數(shù)據(jù)傳遞給服務(wù)端,如
rawData
signature
encryptedData
iv
等
- 調(diào)用
- 服務(wù)端解密用戶授權(quán)數(shù)據(jù)
- 將小程序業(yè)務(wù)端通過
wx.getUserInfo
獲取到 加密數(shù)據(jù)進(jìn)行解密 - 結(jié)合已有的業(yè)務(wù)用戶,創(chuàng)建新的用戶或?qū)σ延杏脩粞a(bǔ)全微信賬戶相關(guān)的信息
- 將小程序業(yè)務(wù)端通過
- 微信小程序用戶信息授權(quán)
-
手機(jī)號授權(quán)
- 獲取方式
- 獲取微信用戶綁定的手機(jī)號,需先調(diào)用
wx.login
接口。 - 因?yàn)樾枰脩糁鲃佑|發(fā)才能發(fā)起獲取手機(jī)號接口,所以該功能不由 API 來調(diào)用,需用
button
組件的點(diǎn)擊來觸發(fā)。 - 需要將
button
組件open-type
的值設(shè)置為getPhoneNumber
,當(dāng)用戶點(diǎn)擊并同意之后,可以通過bindgetphonenumber
事件回調(diào)獲取到微信服務(wù)器返回的加密數(shù)據(jù), 然后在第三方服務(wù)端結(jié)合session_key
以及app_id
進(jìn)行解密獲取手機(jī)號。
- 獲取微信用戶綁定的手機(jī)號,需先調(diào)用
- 注意事項(xiàng)
- 目前該接口針對非個(gè)人開發(fā)者,且完成了認(rèn)證的小程序開放(不包含海外主體)。需謹(jǐn)慎使用,若用戶舉報(bào)較多或被發(fā)現(xiàn)在不必要場景下使用,微信有權(quán)永久回收該小程序的該接口權(quán)限。
- 在回調(diào)中調(diào)用
wx.login
登錄,可能會刷新登錄態(tài)。此時(shí)服務(wù)器使用code
換取的sessionKey
不是加密時(shí)使用的sessionKey
,導(dǎo)致解密失敗。建議開發(fā)者提前進(jìn)行login
;或者在回調(diào)中先使用checkSession
進(jìn)行登錄態(tài)檢查,避免login
刷新登錄態(tài)。
- 獲取方式
-
應(yīng)用建議
- 注意登錄與授權(quán)沒有必然聯(lián)系
- 登錄后的
OpenID
是需要通過服務(wù)器調(diào)用微信接口獲取 - 業(yè)務(wù)可以根據(jù)授權(quán)用戶信息 + 授權(quán)手機(jī)號的結(jié)合,來創(chuàng)建新的業(yè)務(wù)用戶
雜談
- 靜默授權(quán):我們常說的靜默授權(quán)其實(shí)就是通過調(diào)用小程序提供的
wx.login
換取code
后,獲取用戶OpenID
以及其他業(yè)務(wù)關(guān)聯(lián)的信息,因此我們常說的靜默授權(quán)其實(shí)就是不主動調(diào)用用戶信息授權(quán)。 - 至此,針對微信小程序登錄相關(guān)的前端知識點(diǎn)內(nèi)容,基本梳理完成,也達(dá)到了在業(yè)務(wù)開發(fā)中,作為前端開發(fā)對小程序登錄的基礎(chǔ)知識的梳理和總結(jié)。
- 本文主要梳理了微信小程序相關(guān)的 ID 含義,以及對應(yīng)的本人在工作中總結(jié)出的使用場景。
- 同時(shí)根據(jù)實(shí)際的應(yīng)用場景,也確定了登錄與授權(quán)沒有必然的聯(lián)系。
- 以業(yè)務(wù)為參考,也梳理出在實(shí)際應(yīng)用中可以通過微信用戶信息授權(quán)+手機(jī)號授權(quán)來創(chuàng)建一個(gè)符合業(yè)務(wù)用戶體系的注冊流程。
- 本文隨著小程序的發(fā)展必然會有一定的時(shí)效性,具體實(shí)時(shí)內(nèi)容,建議參考微信公眾平臺小程序官方文檔。
作者:hauk0101
來源:掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
相關(guān)案例查看更多
相關(guān)閱讀
- 云南建站公司
- 云南網(wǎng)站建設(shè)服務(wù)公司
- 小程序開發(fā)費(fèi)用
- 網(wǎng)站開發(fā)哪家好
- 網(wǎng)站建設(shè)優(yōu)化
- 高端網(wǎng)站建設(shè)公司
- asp網(wǎng)站
- 云南網(wǎng)站建設(shè)公司
- 小程序開發(fā)聯(lián)系方式
- 網(wǎng)站建設(shè)
- 小程序技術(shù)
- 網(wǎng)站建設(shè)招商
- 汽車報(bào)廢系統(tǒng)
- 出入小程序
- 網(wǎng)站建設(shè)報(bào)價(jià)
- 海南小程序制作公司
- 網(wǎng)站建設(shè)百度官方
- 麗江小程序開發(fā)
- 云南網(wǎng)站建設(shè)哪家好
- 云南網(wǎng)站建設(shè)快速優(yōu)化
- 云南網(wǎng)站建設(shè) 網(wǎng)絡(luò)服務(wù)
- 開發(fā)制作小程序
- 網(wǎng)站搭建
- 云南網(wǎng)站建設(shè)靠譜公司
- vue開發(fā)小程序
- 區(qū)塊鏈
- 昆明網(wǎng)站設(shè)計(jì)
- php網(wǎng)站
- 云南網(wǎng)站優(yōu)化公司
- 云南建設(shè)廳官方網(wǎng)站