一、微信聯合登錄是怎么登錄的,有幾種登錄方式;微信聯合登錄和微信授權登錄【授權登錄(非靜默授權)與靜默授權】
【主動授權】:需要用戶確認登錄,這樣可以通過用戶的個人確認,獲取用戶全面的信息,無論是否關注相關微信公眾號等都可以獲取。
【靜默授權】:不需要用戶確認,只需要用戶訪問某個網頁,屬於嵌套在普通網頁里的授權形式,但是只能獲取到用戶的唯一標示openid和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_userinfo為scope發起的網頁授權,是用來獲取進入頁面的用戶的openid的,並且是靜默授權並自動跳轉到回調頁的。用戶感知的就是直接進入了回調頁(往往是業務頁面)特點:用戶無感知;
2、靜默授權以snsapi_base為scope發起的網頁授權,是用來獲取用戶的基本信息的。但這種授權需要用戶手動同意,並且由於用戶同意過,所以無須關注,就可在授權后獲取該用戶的基本信息。
特殊場景下靜默授權:
對於已關注公眾號的用戶,如果用戶從公眾號的會話或者自定義菜單進入本公眾號的網頁授權頁,即使是scope為snsapi_userinfo,也是靜默授權,用戶無感知。
三、網頁授權流程:(具體代碼:U盤 新浪雲SAE)
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得到值之后返回給前端去操作