這幾天在折騰微信第三方登錄的事情。期間一直報(bào)redirect_uri 參數(shù)錯(cuò)誤遭贸,搜索了各種文章戈咳,試了urlencode等各種辦法,都沒有解決。最后在同事的幫忙下著蛙,才搞定删铃。路程曲折,這里記錄一下踏堡,也好讓大家不要走這些坑猎唁。
【第一步】:在微信開放平臺(tái)注冊(cè)開發(fā)者賬號(hào)并申請(qǐng)網(wǎng)頁應(yīng)用。
【敲黑板重點(diǎn)來了】授權(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)登錄前請(qǐng)注意已獲取相應(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
若提示“該鏈接無法訪問”,請(qǐng)檢查參數(shù)是否填寫錯(cuò)誤削樊,如redirect_uri的域名與審核時(shí)填寫的授權(quán)域名不一致或scope不為snsapi_login豁生。
參數(shù)說明
參數(shù) | 是否必須 | 說明 |
---|---|---|
appid | 是 | 應(yīng)用唯一標(biāo)識(shí) |
redirect_uri | 是 | 請(qǐng)使用urlEncode對(duì)鏈接進(jìn)行處理 |
response_type | 是 | 填code |
scope | 是 | 應(yīng)用授權(quán)作用域,擁有多個(gè)作用域用逗號(hào)(,)分隔漫贞,網(wǎng)頁應(yīng)用目前僅填寫snsapi_login即可 |
state | 否 | 用于保持請(qǐng)求和回調(diào)的狀態(tài)甸箱,授權(quán)請(qǐng)求后原樣帶回給第三方。該參數(shù)可用于防止csrf攻擊(跨站請(qǐng)求偽造攻擊)绕辖,建議第三方帶上該參數(shù)摇肌,可設(shè)置為簡(jiǎn)單的隨機(jī)數(shù)加session進(jìn)行校驗(yàn) |
返回說明
用戶允許授權(quán)后,將會(huì)重定向到redirect_uri的網(wǎng)址上仪际,并且?guī)蟘ode和state參數(shù)围小。
【敲黑板重點(diǎn)來了】這里的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é):一定要注意前面的兩次敲黑板成榜。不要因?yàn)榕渲脝栴}浪費(fèi)時(shí)間框舔。