微信受權流程探索

微信受權流程

前言

最近項目接觸到微信h5頁面開發,對於一個對微信只接觸太小程序的小白來講,整個流程都是懵懵逼逼的。對微信受權流程以前只是有個大體的瞭解,本身並非很清楚其中的通訊,恰好有機會跟小組長一塊兒去探討這個問題,梳理了一下基於咱們項目的微信受權邏輯。前端

微信受權
由上順序圖能夠看到小程序

  1. 用戶進入微信h5頁面,調用微信受權接口,返回用戶受權界面,微信受權接口以下:
https://open.weixin.qq.com/co...

這裏有兩個參數比較注意的是:redirect_uri和state,redirect_uri主要是存放後臺的接口訪問地址,state主要存放微信受權成功後須要跳轉的頁面地址。與整個微信受權流程緊密相關,請先記住了!!記不住記得回來回憶一下後端

若提示該連接沒法訪問,請檢查參數是否填寫錯誤,是否擁有scope參數對應的受權做用域權限。微信返回參數錯誤的緣由通常有兩種:一是在微信公衆平臺沒有配置相應的參數;二是前端配置的接口參數與公衆平臺不一致。api

具體參數說明瀏覽器

參數 是否必須 說明
appid 公衆號的惟一標識
redirect_uri 受權後重定向的回調連接地址, 須要使用 urlEncode 對連接進行處理
response_type 返回類型,填寫code
scope 應用受權做用域,snsapi_base (不彈出受權頁面,直接跳轉,只能獲取用戶openid),snsapi_userinfo (彈出受權頁面,可經過openid拿到暱稱、性別、所在地。而且, 即便在未關注的狀況下,只要用戶受權,也能獲取其信息 )
state 重定向後會帶上state參數,傳遞什麼返回什麼
wechat_redirect 不管直接打開仍是作頁面302重定向時候,必須帶此參數
  1. 用戶贊成受權以後,即向微信發送贊成受權請求,微信返回一個302的重定向數據包(redirect_uri+code+state),客戶端瀏覽器重定向redirect_uri+code。此處至關於向後臺請求了一次接口,後臺存取相關請求信息並經過獲取的code換取網頁受權access_token(後端)

    因爲公衆號的secret和獲取到的access_token安全級別都很是高,必須只保存在服務器,不容許傳給客戶端。後續刷新access_token、經過access_token獲取用戶信息等步驟,也必須從服務器發起安全

  2. 若是網頁受權做用域爲snsapi_userinfo,則此時開發者能夠經過access_token和openid拉取用戶信息了。後臺用access_token換取用戶信息以後,向客戶端返回一個重定向數據包(state+token),客戶端瀏覽器根據state進行重定向並在該頁面存取相關token信息
https://api.weixin.qq.com/sns...
  1. 此時客戶端已經獲取token信息,根據token信息能夠向後臺請求接口獲取相關信息。

注意

  1. 調取微信受權接口時根據scope的不一樣有兩種受權方式:snsapi_base是用來獲取用戶的openid,不須要用戶手動受權。而snsapi_userinfo是用來獲取用戶基本信息,須要用戶手動受權。
  2. 檢驗受權憑證(access_token)是否有效

請求方法:服務器

http:GET(請使用https協議) https://api.weixin.qq.com/sns...
參數 說明
access_token 網頁受權接口調用憑證,注意:此access_token與基礎支持的access_token不一樣
openid 用戶的惟一標識
相關文章
相關標籤/搜索