微信社交登录集成:如何从微信SDK获取auth code?
获取微信OAuth2授权码(Auth Code)的正确途径
我来帮你理清楚获取微信Auth Code的完整流程——这正是你调用access_token接口失败的关键缺失环节。根据不同的集成场景,获取code的方式略有不同,下面分情况说明:
1. 网页端/PC网站场景
要拿到code,首先得引导用户进入微信的授权页面,具体步骤如下:
- 第一步:构造授权跳转链接,让用户点击这个链接跳转到微信的授权页。链接格式是:
这里有几个关键注意点:https://open.weixin.qq.com/connect/qrconnect?appid=你的APPID&redirect_uri=你的回调地址&response_type=code&scope=snsapi_login&state=自定义状态值#wechat_redirectredirect_uri必须是你在微信开放平台后台已备案的域名下的地址,而且需要做URL编码,比如http://www.example.com/callback要编码成http%3A%2F%2Fwww.example.com%2Fcallback。scope参数如果是做网页登录,用snsapi_login就够了;如果需要获取用户基本信息,可以用snsapi_userinfo,按需选择。state是自定义的字符串,用来防止CSRF攻击,授权成功后微信会原样返回这个值,建议加上。
- 第二步:用户在微信授权页面点击「同意授权」后,微信会自动跳转到你设置的
redirect_uri,此时URL的参数里就会带上code和state,比如http://www.example.com/callback?code=abc123&state=xyz,你直接从这个URL里提取code即可。
2. 移动端场景
微信内H5页面
如果是在微信浏览器里的H5应用,授权链接格式稍有不同:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的APPID&redirect_uri=你的回调地址&response_type=code&scope=snsapi_base&state=自定义状态值#wechat_redirect
同样要保证redirect_uri已备案且编码,用户授权后回调地址会携带code参数。
原生APP(Android/iOS)
如果你开发的是原生APP,不需要自己构造链接,直接调用微信官方提供的SDK授权接口即可。用户授权后,SDK会通过回调方法把code返回给你,按照SDK的文档处理回调就行。
容易踩的坑
- 务必确保
redirect_uri和微信后台配置的完全一致,包括协议(http/https)、域名、路径,哪怕多一个斜杠或者大小写不一致,都可能导致授权失败拿不到code。 response_type必须设置为code,这是获取授权码的核心参数,不能写错。- code是一次性的,有效期只有5分钟,拿到后要立刻调用
access_token接口,过期就失效了。
内容的提问来源于stack exchange,提问作者Deepika P
相关产品推荐
相关产品推荐

