微信OPENID受權方法

今天搞了下微信受權, 總結了下微信的受權規則與步驟mysql

 

先來幾個關鍵字sql

Openid  微信ip(屬於惟一指向公衆號的id)數據庫

redirect_uri  受權回調地址api

State 回調地址帶參數緩存

Appid  公衆號的惟一標識微信

access_token 受權憑證app

Code 填寫第一步獲取的code參數nosql

微信受權有分兩種受權工具

明性受權snsapi_userinfo  (拉取用戶信息)

隱性受權 snsapi_base (只拉取微信openid)spa

 

OK,這些是玩受權的幾個重要的參數.下面看下步驟如何實現

第一步: 用戶贊成受權,獲取code

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

上面有幾個參數, 須要解釋下,

大寫的參數, 是要大家去填寫的

APPID : 公衆號裏面的appid 在開發者工具那裏能看到

REDIRECT_URL: 回調地址 ( 受權以後該訪問哪一個地址)

STATE : 參數, 經過域名方式傳過來的參數, 可接受

SCOPE: 受權方式( 明性受權和隱形受權)

 

這個完成了以後 他會跳到你的回調地址並返回 code值  和state值. ( )

 

這時候 要執行第二個步驟:  (經過code獲取aesccos_token和openid)

獲取code後,請求如下連接獲取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

地址如上, 依然要把參數貼上。

可是要記得把CODE貼上去

 

經過這一步能獲取到asccos_token

!!!這時候會要注意一個規則

access_token 一天只能訪問2000次.  過了2000次以後會有報錯40001.要到次日早上才能從新的刷新.

不過這個能夠用一個緩存access_token的方法來使用, 由於access_token方法的緩存時間是7200秒  

這時候咱們能夠把他緩存在mysql或者nosql中, 用於在下次緩存的時候直接調用access_token, 這樣就能緩解當天2000次調用的規則.

使用方法以下:

獲取第二步的refresh_token後,請求如下連接獲取access_token: https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

經過REFRESH_TOKEN 來獲取一個長期能使用的access_token,而後緩存在數據庫裏面,用於下次調用,

由於只有7200秒, 他會有無效,報錯是40003. 這時候咱們能夠用經過一個檢測方法來判斷這個40003報錯, 而後進行下一次的ACCESS_TOKEN進行下次緩存

http:GET(請使用https協議)https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID

經過OPENID + ACCESS_TOKEN 來驗證 

相關文章
相關標籤/搜索