一、appid 、openID 和 UnionID 定義與區(qū)別
1、appid: 微信小程序/公眾號的唯一憑證,即 AppID。
獲取途徑:可在「微信公眾平臺 - 設(shè)置 - 開發(fā)設(shè)置」頁中獲得。(需要已經(jīng)成為開發(fā)者,且?guī)ぬ枦]有異常狀態(tài))
用途:小程序的 AppID 相當(dāng)于小程序平臺的一個身份證,會在很多場景中使用,比如小程序的登錄、授權(quán)等
2、openID: openID 是微信生態(tài)下應(yīng)用的唯一標識, ,即同一個用戶在不同的小程序下的openid是不同的。
獲取途徑:調(diào)用 auth.code2Session 接口,通過code(登錄憑證,調(diào)用wx.login獲?。?appid+appsecret(小程序密鑰,獲取方式和appid一樣)可以換取openid,即 靜默授權(quán)。
用途:用于在開發(fā)者系統(tǒng)中標識用戶信息
3、UnionID:UnionID 是微信生態(tài)下用戶的唯一標識,換句話說,同一用戶,對同一個微信開放平臺下的不同應(yīng)用,UnionID是相同的。
獲取途徑:綁定了開發(fā)者帳號的小程序,可以通過以下途徑獲取 UnionID。
1)開發(fā)者可以直接通過 wx.login + code2Session 獲取到該用戶 UnionID,無須用戶授權(quán)。
2)小程序端調(diào)用云函數(shù)時,可在云函數(shù)中通過 Cloud.getWXContext 獲取 UnionID。
用途:標識同一個微信開放平臺下的用戶,可用于去重判斷
二、微信登錄方式:微信聯(lián)合登錄、微信授權(quán)登錄【授權(quán)登錄(非靜默授權(quán))與靜默授權(quán)】
(一)微信聯(lián)合登錄
也就是我們常用的微信移動端/PC端之間的掃碼登錄,PC端用微信掃碼登錄,微信移動端確認授權(quán)登錄后,應(yīng)用可以從微信拿到用戶的open id或union id,將微信獲取的用戶信息與自己賬戶體系中的用戶身份進行關(guān)聯(lián);
(二)授權(quán)登錄(非靜默授權(quán)):
需要用戶確認登錄,這樣可以通過用戶的個人確認,獲取用戶全面的信息,無論是否關(guān)注相關(guān)微信公眾號等都可以獲取。
(三)靜默授權(quán)
1、靜默授權(quán)不需要用戶確認,只需要用戶訪問某個網(wǎng)頁,屬于嵌套在普通網(wǎng)頁里的授權(quán)形式,但是只能獲取到用戶的唯一標示openid和union id,無法拿到用戶的微信頭像、微信名稱等個人信息,對于用戶的簡單認證還是很有用的。
2、靜默授權(quán)的過程:
1)調(diào)用 wx.login() 獲取 臨時登錄憑證code
2)調(diào)用 auth.code2Session 接口,換取用戶唯一標識 openID
3)調(diào)用本地后臺服務(wù),將 openID 映射到本地的 userId
參考文章: