今天搞了下微信受權, 總結了下微信的受權規則與步驟mysql
先來幾個關鍵字sql
Openid 微信ip(屬於惟一指向公衆號的id)數據庫
redirect_uri 受權回調地址api
State 回調地址帶參數緩存
Appid 公衆號的惟一標識微信
access_token 受權憑證app
Code 填寫第一步獲取的code參數nosql
微信受權有分兩種受權工具
隱性受權 snsapi_base (只拉取微信openid)spa
OK,這些是玩受權的幾個重要的參數.下面看下步驟如何實現
第一步: 用戶贊成受權,獲取code
上面有幾個參數, 須要解釋下,
大寫的參數, 是要大家去填寫的
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 來驗證