這幾天在折騰微信第三方登錄的事情。期間一直報redirect_uri 參數(shù)錯誤,搜索了各種文章,試了urlencode等各種辦法,都沒有解決。最后在同事的幫忙下,才搞定。路程曲折,這里記錄一下,也好讓大家不要走這些坑。
【第一步】:在微信開放平臺注冊開發(fā)者賬號并申請網(wǎng)頁應(yīng)用。
【敲黑板重點來了】授權(quán)回調(diào)域一定要寫網(wǎng)站的域名。不要加
https://
http://
這些前綴。如:www.sciparty.com
【第二步】:按照網(wǎng)站應(yīng)用微信登錄開發(fā)指南拼接網(wǎng)站的鏈接地址。如果顯示二維碼則調(diào)用成功。
第三方使用網(wǎng)站應(yīng)用授權(quán)登錄前請注意已獲取相應(yīng)網(wǎng)頁授權(quán)作用域(scope=snsapi_login),則可以通過在PC端打開以下鏈接:https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
若提示“該鏈接無法訪問”,請檢查參數(shù)是否填寫錯誤,如redirect_uri的域名與審核時填寫的授權(quán)域名不一致或scope不為snsapi_login。
參數(shù)說明
參數(shù) | 是否必須 | 說明 |
---|---|---|
appid | 是 | 應(yīng)用唯一標識 |
redirect_uri | 是 | 請使用urlEncode對鏈接進行處理 |
response_type | 是 | 填code |
scope | 是 | 應(yīng)用授權(quán)作用域,擁有多個作用域用逗號(,)分隔,網(wǎng)頁應(yīng)用目前僅填寫snsapi_login即可 |
state | 否 | 用于保持請求和回調(diào)的狀態(tài),授權(quán)請求后原樣帶回給第三方。該參數(shù)可用于防止csrf攻擊(跨站請求偽造攻擊),建議第三方帶上該參數(shù),可設(shè)置為簡單的隨機數(shù)加session進行校驗 |
返回說明
用戶允許授權(quán)后,將會重定向到redirect_uri的網(wǎng)址上,并且?guī)蟘ode和state參數(shù)。
【敲黑板重點來了】這里的redirect_uri可以是你網(wǎng)站下的任何頁面(不局限于授權(quán)回調(diào)域配置的域名),但是一定要在前面加上
http://
,并且使用urlencode編碼。如:http://www.sciparty.com/weixinlogin。例如下面的鏈接地址:
https://open.weixin.qq.com/connect/qrconnect?appid=wxf43a4fc291843e43&redirect_uri=http%3a%2f%2fwww.sciparty.com%2fweixinlogin&response_type=code&scope=snsapi_login#wechat_redirect
總結(jié):一定要注意前面的兩次敲黑板。不要因為配置問題浪費時間。