今天搞了下微信授權, 總結了下微信的授權規則與步驟
先來幾個關鍵字
Openid 微信ip(屬於唯一指向公眾號的id)
redirect_uri 授權回調地址
State 回調地址帶參數
Appid 公眾號的唯一標識
access_token 授權憑證
Code 填寫第一步獲取的code參數
微信授權有分兩種授權
明性授權snsapi_userinfo (拉取用戶信息)
隱性授權 snsapi_base (只拉取微信openid)
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 來驗證

