
这几天在折腾微信第三方登录的事情。期间一直报redirect_uri 参数错误,搜索了各种文章,试了urlencode等各种办法,都没有解决。最后在同事的帮忙下,才搞定。路程曲折,这里记录一下,也好让大家不要走这些坑。
【第一步】:在微信开放平台注册开发者账号并申请网页应用。


【敲黑板重点来了】授权回调域一定要写网站的域名。不要加
https://
http://
这些前缀。如:www.sciparty.com
【第二步】:按照网站应用微信登录开发指南拼接网站的链接地址。如果显示二维码则调用成功。
第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(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
若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或scope不为snsapi_login。
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
appid | 是 | 应用唯一标识 |
redirect_uri | 是 | 请使用urlEncode对链接进行处理 |
response_type | 是 | 填code |
scope | 是 | 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可 |
state | 否 | 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 |
返回说明
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数。
【敲黑板重点来了】这里的redirect_uri可以是你网站下的任何页面(不局限于授权回调域配置的域名),但是一定要在前面加上
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
调用成功
总结:一定要注意前面的两次敲黑板。不要因为配置问题浪费时间。
网友评论