ylbtech-小程序-文章:微信第三方登錄(靜默授權和非靜默授權) |
1.返回頂部 |
用戶在微信客戶端中訪問第三方網頁,公眾號可以通過微信網頁授權機制,來獲取用戶基本信息,進而實現業務邏輯。
微信的授權登錄在日常應用中應用的非常廣泛,越來越多的平台支持用戶使用微信進行授權第三方登錄
使用微信授權登錄有哪些優勢/好處;
1、用戶量足夠大,基本所有用戶都會有微信,登錄起來比較方便快捷;
2、微信作為一個開放平台,為眾多公眾號/服務開放了許多服務接口,讓公眾號能夠為自己的用戶提供更加個性、更加優質的產品服務;
open id 和 union id ,這兩個id有什么區別;
1、open id:在關注者與公眾號產生消息交互后,公眾號可獲得關注者的open id, 同一個用戶,在不同公眾號或移動應用下對應有不同open id標識;
2、union id:同一個用戶,在不同公眾號或移動應用下unionID相同;前提是,如若需要做多個公眾號以及移動應用賬戶互通,得到唯一身份標識union id,則需要將多個公眾號或移動應用在微信開放平台進行綁定,然后我們才能給拿到union id;
所以,如果某個應用或者服務,有聯合登錄甚至多個公眾應用多賬戶互通,可以采用union id來進行賬戶體系的用戶識別與合並;即微信平台可以通過union id 來進行基於多個公眾號之間的賬戶體系互通與識別合並;
微信聯合登錄是怎么登錄的,有幾種登錄方式;微信聯合登錄和微信授權登錄【授權登錄(非靜默授權)與靜默授權】
微信聯合登錄;也就是我們常用的微信移動端/PC端之間的掃碼登錄,PC端用微信掃碼登錄,微信移動端確認授權登錄后,應用可以從微信拿到用戶的open id或union id,將微信獲取的用戶信息與自己賬戶體系中的用戶身份進行關聯;
授權登錄:需要用戶確認登錄,這樣可以通過用戶的個人確認,獲取用戶全面的信息,無論是否關注相關微信公眾號等都可以獲取。
靜默授權不需要用戶確認,只需要用戶訪問某個網頁,屬於嵌套在普通網頁里的授權形式,但是只能獲取到用戶的唯一標示openid和union id,無法拿到用戶的微信頭像、微信名稱等個人信息,對於用戶的簡單認證還是很有用的。
如何通過微信賬戶體系來做多應用、多平台之間的賬戶互通體系;如果某個服務同時分布在多個公眾號中,賬戶體系如何建立;如何做到用戶身份唯一識別;
1)、同一用戶不同公眾號/應用下open id不同,同一用戶不同公眾號/應用下unionid相同;
2)、建立應用賬戶體系時,通過union來進行多應用/平台之間的用戶賬戶體系識別與合並;
3)、多應用/平台建立賬戶體系時,需要做到唯一user id對應唯一union id;
某個服務,包括移動app端、PC網頁端、公眾號端服務,那么用戶使用微信授權登錄的數據流轉流程是怎么樣的;
1、用戶通過微信授權移動app服務;該應用服務即可通過接口獲取用戶的union id,這個時候,如果在數據庫中沒有查到該id,則識別為新用戶,直接創建一個user id,該唯一user id與union id 對應;
2、用戶通過微信掃碼PC端授權聯合登陸獲取PC端服務;該應用服務即可通過接口獲取用戶的union id,這個時候,在數據庫中查到有這個id,就會把pc登錄這個賬戶合並到之前創建的唯一user id賬戶下;
3、用戶通過關注該服務公眾號,用微信授權登錄公眾號服務;該應用服即可通過接口獲取用戶的union id,這個時候,在數據庫中查到有這個id,就會把公眾號中登錄的這個賬戶合並到之前創建的唯一user id賬戶下;
網頁授權的兩種scope的區別說明:
1、授權登錄以snsapi_base為scope發起的網頁授權,是用來獲取進入頁面的用戶的openid的,並且是靜默授權並自動跳轉到回調頁的。用戶感知的就是直接進入了回調頁(往往是業務頁面)特點:用戶無感知;
2、靜默授權以snsapi_userinfo為scope發起的網頁授權,是用來獲取用戶的基本信息的。但這種授權需要用戶手動同意,並且由於用戶同意過,所以無須關注,就可在授權后獲取該用戶的基本信息。
特殊場景下靜默授權:
對於已關注公眾號的用戶,如果用戶從公眾號的會話或者自定義菜單進入本公眾號的網頁授權頁,即使是scope為snsapi_userinfo,也是靜默授權,用戶無感知。
網頁授權流程:
1、引導用戶進入授權頁面同意授權,獲取code
確保微信公眾賬號擁有授權作用域(scope參數)的權限的前提下引導用戶去授權頁面
參考鏈接:
scope為snsapi_base
注意:appid,redirect_uri,state這些要和后台協商好
https://open.weixin.qq.com/connect/oauth2/authorize?appid="+wx_appid+"&redirect_uri="+api.wx_reg+"&response_type=code&scope=snsapi_login,snsapi_userinfo&state=1,0#wechat_redirect
scope為snsapi_userinfo
https://open.weixin.qq.com/connect/oauth2/authorize?appid="+wx_appid+"&redirect_uri="+api.wx_reg+"&response_type=code&scope=snsapi_base,snsapi_userinfo&state=1,0#wechat_redirect
用戶同意授權后
如果用戶同意授權,頁面將跳轉至 redirect_uri/?code=CODE&state=STATE。
2、通過code換取網頁授權access_token(后台操作)
頁面跳回跳的url上redirect_uri/?code=CODE&state=STATE。code
通過code換取的是網頁授權access_token,如果網頁授權的作用域為snsapi_base,則本步驟中獲取到網頁授權access_token的同時,也獲取到了openid,snsapi_base式的網頁授權流程即到此為止。
3:需要個人信息。后台通過code得到值之后返回給前端去操作
2.返回頂部 |
3.返回頂部 |
4.返回頂部 |
5.返回頂部 |
6.返回頂部 |
7.返回頂部 |
8.返回頂部 |
9.返回頂部 |
10.返回頂部 |
11.返回頂部 |
![]() |
作者:ylbtech 出處:http://ylbtech.cnblogs.com/ 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 |