今天碰到微信公眾號實現菜單跳轉請求用戶參數
獲取code碼碰到了這個問題
網頁微信第三方登錄-redirect_uri參數錯誤
通過網頁授權access_token和openid獲取用戶基本信息(支持UnionID機制)
目錄
2 第二步:通過code換取網頁授權access_token
4 第四步:拉取用戶信息(需scope為 snsapi_userinfo)
第一步:用戶同意授權,獲取code
在確保微信公眾賬號擁有授權作用域(scope參數)的權限的前提下(服務號獲得高級接口后,默認擁有scope參數中的snsapi_base和snsapi_userinfo),引導關注者打開如下頁面:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“該鏈接無法訪問”,請檢查參數是否填寫錯誤,是否擁有scope參數對應的授權作用域權限。
尤其注意:由於授權操作安全等級較高,所以在發起授權請求時,微信會對授權鏈接做正則強匹配校驗,如果鏈接的參數順序不對,授權頁面將無法正常訪問
參考鏈接(請在微信客戶端中打開此鏈接體驗):
scope為snsapi_base
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
scope為snsapi_userinfo
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
尤其注意:跳轉回調redirect_uri,應當使用https鏈接來確保授權code的安全性。
參數說明
參數 | 是否必須 | 說明 |
---|---|---|
appid | 是 | 公眾號的唯一標識 |
redirect_uri | 是 | 授權后重定向的回調鏈接地址, 請使用 urlEncode 對鏈接進行處理 |
response_type | 是 | 返回類型,請填寫code |
scope | 是 | 應用授權作用域,snsapi_base (不彈出授權頁面,直接跳轉,只能獲取用戶openid),snsapi_userinfo (彈出授權頁面,可通過openid拿到昵稱、性別、所在地。並且, 即使在未關注的情況下,只要用戶授權,也能獲取其信息 ) |
state | 否 | 重定向后會帶上state參數,開發者可以填寫a-zA-Z0-9的參數值,最多128字節 |
#wechat_redirect | 是 | 無論直接打開還是做頁面302重定向時候,必須帶此參數 |
注意:其中redirect_uri必須到 http://tool.chinaz.com/tools/urlencode.aspx把你要請求的地址轉urlEncode碼然后請求
用戶同意授權后
如果用戶同意授權,頁面將跳轉至 redirect_uri/?code=CODE&state=STATE。
code說明 : code作為換取access_token的票據,每次用戶授權帶上的code將不一樣,code只能使用一次,5分鍾未被使用自動過期。
我的鏈接轉碼過前為:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7f1ceeace0d20918&redirect_uri=https://bw.cross.echosite.cn/shjz/people!addPeople213.do&code=CODE&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect
我的鏈接轉碼過后為:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7f1ceeace0d20918&redirect_uri=https%3a%2f%2fbw.cross.echosite.cn%2fshjz%2fpeople!addPeople213.do&code=CODE&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect
發送到微信點開第一步
然后參數到了后台
其中addPeople213這個方法不能帶參數否則會報錯,然后在方法體中接收code碼就ok了
到此code碼就獲取到了