根據(jù)下面資源整理
關(guān)于微信授權(quán)登錄--簡(jiǎn)書
# 微信 openid = hash(uid + app_id) 也就是說,對(duì)每個(gè)app可以做到用戶id唯一
openid 、uid、app_id之間的關(guān)系
你可以簡(jiǎn)單的理解為 openid = hash(uid + app_id) 也就是說,對(duì)每個(gè)app可以做到用戶id唯一,但是這個(gè)id又不是通用的,你在其它app上同樣的用戶,openid會(huì)完全不同,反正你無法通過這個(gè)id獲取用戶的任何信息。用戶信息是騰訊的命根子,它不會(huì)隨便給你的。
討論微信授權(quán)登錄,我們就不得不關(guān)注微信賬號(hào)體系的兩個(gè)id:open id 和 union id;
1)、在關(guān)注者與公眾號(hào)產(chǎn)生消息交互后,公眾號(hào)可獲得關(guān)注者的open id;
2)、如果開發(fā)者有在多個(gè)公眾號(hào)、公眾號(hào)、移動(dòng)應(yīng)用之間統(tǒng)一用戶帳號(hào)的需求,需要前往微信開放平臺(tái)(open.weixin.qq.com)綁定公眾號(hào)后,才可利用union id機(jī)制來滿足上述需求;
union id機(jī)制的作用說明:如果開發(fā)者擁有多個(gè)移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(hào),可通過獲取用戶基本信息中的unionid來區(qū)分用戶的唯一性,因?yàn)橥挥脩?,?duì)同一個(gè)微信開放平臺(tái)下的不同應(yīng)用(移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(hào)),unionid是相同的;
open id 和 union id ,這兩個(gè)id有什么區(qū)別;
1)、open id: 同一個(gè)用戶,在不同公眾號(hào)或移動(dòng)應(yīng)用下對(duì)應(yīng)有不同open id標(biāo)識(shí);
2)、 union id:同一個(gè)用戶,在不同公眾號(hào)或移動(dòng)應(yīng)用下unionID相同;前提是,如若需要做多個(gè)公眾號(hào)以及移動(dòng)應(yīng)用賬戶互通,得到唯一身份標(biāo)識(shí)union id,則需要將多個(gè)公眾號(hào)或移動(dòng)應(yīng)用在微信開放平臺(tái)進(jìn)行綁定,然后我們才能給拿到union id;
所以,如果某個(gè)應(yīng)用或者服務(wù),有聯(lián)合登錄甚至多個(gè)公眾應(yīng)用多賬戶互通,可以采用union id來進(jìn)行賬戶體系的用戶識(shí)別與合并;即微信平臺(tái)可以通過union id 來進(jìn)行基于多個(gè)公眾號(hào)之間的賬戶體系互通與識(shí)別合并;
了解了微信賬戶體系的兩個(gè)id之間的關(guān)系,微信聯(lián)合登錄是怎么登錄的,有幾種登錄方式;
1)、微信聯(lián)合登錄;也就是我們常用的微信移動(dòng)端/PC端之間的掃碼登錄;
在PC端用微信掃碼登錄,微信移動(dòng)端確認(rèn)授權(quán)登錄后,應(yīng)用可以從微信拿到用戶的open id或union id,將微信獲取的用戶信息與自己賬戶體系中的用戶身份進(jìn)行關(guān)聯(lián);
2)、微信授權(quán)登錄;微信授權(quán)登錄有兩種;
a)、點(diǎn)擊授權(quán)登錄;
需要登錄時(shí),頁面跳轉(zhuǎn)到授權(quán)頁面,也就是我們經(jīng)常看到的綠色授權(quán)頁面,用戶授權(quán)后可從微信拿到open id、union id;
b)、靜默授權(quán);
靜默授權(quán)下,不需要跳轉(zhuǎn)頁面讓用戶確認(rèn)授權(quán),而是直接授權(quán)用戶登錄;但是需要注意的是,靜默授權(quán)只能拿到用戶的open id和union id,無法拿到用戶的微信頭像、微信名稱等個(gè)人信息;
微信作為一個(gè)社交的賬號(hào)體系,其他服務(wù)使用其作為授權(quán)登錄的基礎(chǔ),可能會(huì)產(chǎn)生什么問題;
1)、由于微信開放給第三方的信息維度限制,應(yīng)用通過微信授權(quán)登錄無法獲取到自建賬號(hào)體系那樣齊全的用戶個(gè)人信息;
2)、由于很多應(yīng)用都是在公眾號(hào)中提供授權(quán)登錄進(jìn)行服務(wù)透出,就會(huì)導(dǎo)致平臺(tái)賬號(hào)與微信公眾號(hào)中賬戶體系不一致;
3)、由于很多應(yīng)用都需要用戶進(jìn)行綁定手機(jī)操作,那么就會(huì)由于openid的原因?qū)е掠脩暨M(jìn)行重復(fù)綁定;
如何通過微信賬戶體系來做多應(yīng)用、多平臺(tái)之間的賬戶互通體系;如果某個(gè)服務(wù)同時(shí)分布在多個(gè)公眾號(hào)中,賬戶體系如何建立;如何做到用戶身份唯一識(shí)別;
1)、同一用戶不同公眾號(hào)/應(yīng)用下open id不同,同一用戶不同公眾號(hào)/應(yīng)用下unionid相同;
2)、建立應(yīng)用賬戶體系時(shí),通過union來進(jìn)行多應(yīng)用/平臺(tái)之間的用戶賬戶體系識(shí)別與合并;
3)、多應(yīng)用/平臺(tái)建立賬戶體系時(shí),需要做到唯一user id對(duì)應(yīng)唯一union id;