微信授權流程探索
微信授權流程
前言
最近專案接觸到微信h5頁面開發,對於一個對微信只接觸過小程式的小白來說,整個流程都是懵懵逼逼的。對微信授權流程之前只是有個大致的瞭解,自己並不是很清楚其中的通訊,剛好有機會跟小組長一起去探討這個問題,梳理了一下基於我們專案的微信授權邏輯。
由上順序圖可以看到
- 使用者進入微信h5頁面,呼叫微信授權介面,返回使用者授權介面,微信授權介面如下:
https://open.weixin.qq.com/co...
這裡有兩個引數比較注意的是:redirect_uri和state,redirect_uri主要是存放後臺的介面訪問地址,state主要存放微信授權成功後需要跳轉的頁面地址。與整個微信授權流程緊密相關,請先記住了!!記不住記得回來回憶一下
若提示該連結無法訪問,請檢查引數是否填寫錯誤,是否擁有scope引數對應的授權作用域許可權。微信返回引數錯誤的原因一般有兩種:一是在微信公眾平臺沒有配置相應的引數;二是前端配置的介面引數與公眾平臺不一致。
具體引數說明
引數 | 是否必須 | 說明 |
---|---|---|
appid | 是 | 公眾號的唯一標識 |
redirect_uri | 是 | 授權後重定向的回撥連結地址, 需要使用 urlEncode 對連結進行處理 |
response_type | 是 | 返回型別,填寫code |
scope | 是 | 應用授權作用域,snsapi_base (不彈出授權頁面,直接跳轉,只能獲取使用者openid),snsapi_userinfo (彈出授權頁面,可通過openid拿到暱稱、性別、所在地。並且, 即使在未關注的情況下,只要使用者授權,也能獲取其資訊 ) |
state | 否 | 重定向後會帶上state引數,傳遞什麼返回什麼 |
wechat_redirect | 是 | 無論直接開啟還是做頁面302重定向時候,必須帶此引數
-
使用者同意授權之後,即向微信傳送同意授權請求,微信返回一個302的重定向資料包(redirect_uri+code+state),客戶端瀏覽器重定向redirect_uri+code。此處相當於向後臺請求了一次介面,後臺存取相關請求資訊並通過獲取的code換取網頁授權access_token(後端)
由於公眾號的secret和獲取到的access_token安全級別都非常高,必須只儲存在伺服器,不允許傳給客戶端。後續重新整理access_token、通過access_token獲取使用者資訊等步驟,也必須從伺服器發起
- 如果網頁授權作用域為snsapi_userinfo,則此時開發者可以通過access_token和openid拉取使用者資訊了。後臺用access_token換取使用者資訊之後,向客戶端返回一個重定向資料包(state+token),客戶端瀏覽器根據state進行重定向並在該頁面存取相關token資訊
https://api.weixin.qq.com/sns...
- 此時客戶端已經獲取token資訊,根據token資訊可以向後臺請求介面獲取相關資訊。
注意
- 調取微信授權介面時根據scope的不同有兩種授權方式:snsapi_base是用來獲取使用者的openid,不需要使用者手動授權。而snsapi_userinfo是用來獲取使用者基本資訊,需要使用者手動授權。
- 檢驗授權憑證(access_token)是否有效
請求方法:
http:GET(請使用https協議) https://api.weixin.qq.com/sns...
引數 | 說明 |
---|---|
access_token | 網頁授權介面呼叫憑證,注意:此access_token與基礎支援的access_token不同 |
openid | 使用者的唯一標識 |