根據(jù)下面資源整理
關于微信授權登錄--簡書
# 微信 openid = hash(uid + app_id) 也就是說懊纳,對每個app可以做到用戶id唯一
openid 乎完、uid熏兄、app_id之間的關系
你可以簡單的理解為 openid = hash(uid + app_id) 也就是說,對每個app可以做到用戶id唯一,但是這個id又不是通用的摩桶,你在其它app上同樣的用戶桥状,openid會完全不同,反正你無法通過這個id獲取用戶的任何信息硝清。用戶信息是騰訊的命根子辅斟,它不會隨便給你的。
討論微信授權登錄芦拿,我們就不得不關注微信賬號體系的兩個id:open id 和 union id士飒;
1)、在關注者與公眾號產(chǎn)生消息交互后防嗡,公眾號可獲得關注者的open id变汪;
2)、如果開發(fā)者有在多個公眾號蚁趁、公眾號裙盾、移動應用之間統(tǒng)一用戶帳號的需求,需要前往微信開放平臺(open.weixin.qq.com)綁定公眾號后他嫡,才可利用union id機制來滿足上述需求番官;
union id機制的作用說明:如果開發(fā)者擁有多個移動應用、網(wǎng)站應用和公眾帳號钢属,可通過獲取用戶基本信息中的unionid來區(qū)分用戶的唯一性徘熔,因為同一用戶,對同一個微信開放平臺下的不同應用(移動應用淆党、網(wǎng)站應用和公眾帳號)酷师,unionid是相同的;
open id 和 union id 染乌,這兩個id有什么區(qū)別山孔;
1)、open id: 同一個用戶荷憋,在不同公眾號或移動應用下對應有不同open id標識台颠;
2)、 union id:同一個用戶勒庄,在不同公眾號或移動應用下unionID相同串前;前提是,如若需要做多個公眾號以及移動應用賬戶互通实蔽,得到唯一身份標識union id荡碾,則需要將多個公眾號或移動應用在微信開放平臺進行綁定,然后我們才能給拿到union id局装;
所以玩荠,如果某個應用或者服務漆腌,有聯(lián)合登錄甚至多個公眾應用多賬戶互通,可以采用union id來進行賬戶體系的用戶識別與合并阶冈;即微信平臺可以通過union id 來進行基于多個公眾號之間的賬戶體系互通與識別合并;
了解了微信賬戶體系的兩個id之間的關系塑径,微信聯(lián)合登錄是怎么登錄的女坑,有幾種登錄方式;
1)统舀、微信聯(lián)合登錄匆骗;也就是我們常用的微信移動端/PC端之間的掃碼登錄;
在PC端用微信掃碼登錄誉简,微信移動端確認授權登錄后碉就,應用可以從微信拿到用戶的open id或union id,將微信獲取的用戶信息與自己賬戶體系中的用戶身份進行關聯(lián)闷串;
2)瓮钥、微信授權登錄;微信授權登錄有兩種烹吵;
a)碉熄、點擊授權登錄;
需要登錄時肋拔,頁面跳轉到授權頁面锈津,也就是我們經(jīng)常看到的綠色授權頁面凉蜂,用戶授權后可從微信拿到open id琼梆、union id;
b)窿吩、靜默授權茎杂;
靜默授權下,不需要跳轉頁面讓用戶確認授權爆存,而是直接授權用戶登錄蛉顽;但是需要注意的是,靜默授權只能拿到用戶的open id和union id先较,無法拿到用戶的微信頭像携冤、微信名稱等個人信息;
微信作為一個社交的賬號體系闲勺,其他服務使用其作為授權登錄的基礎曾棕,可能會產(chǎn)生什么問題;
1)菜循、由于微信開放給第三方的信息維度限制翘地,應用通過微信授權登錄無法獲取到自建賬號體系那樣齊全的用戶個人信息;
2)、由于很多應用都是在公眾號中提供授權登錄進行服務透出衙耕,就會導致平臺賬號與微信公眾號中賬戶體系不一致昧穿;
3)、由于很多應用都需要用戶進行綁定手機操作橙喘,那么就會由于openid的原因導致用戶進行重復綁定时鸵;
如何通過微信賬戶體系來做多應用、多平臺之間的賬戶互通體系厅瞎;如果某個服務同時分布在多個公眾號中饰潜,賬戶體系如何建立;如何做到用戶身份唯一識別和簸;
1)彭雾、同一用戶不同公眾號/應用下open id不同,同一用戶不同公眾號/應用下unionid相同锁保;
2)薯酝、建立應用賬戶體系時,通過union來進行多應用/平臺之間的用戶賬戶體系識別與合并身诺;
3)蜜托、多應用/平臺建立賬戶體系時,需要做到唯一user id對應唯一union id霉赡;