# 换取用户授权凭证
接口应在服务器端调用,不可在前端(小程序、网页、APP等)直接调用,具体可参考接口调用指南
接口英文名:snsAccessToken
通过code换取网页授权用户access_token
此接口与获取接口调用凭据不同,为用户级别的授权 token 获取。该 token 仅能获取授权用户的相关信息,无法用于调用其他接口。
注意:此接口频率限制为 5 万/分钟
# 1. 调用方式
# HTTPS 调用
GET https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=GRANT_TYPE
# 云调用
- 本接口不支持云调用
# 第三方调用
- 本接口不支持第三方平台调用。
# 2. 请求参数
# 查询参数 Query String parameters
参数名 | 类型 | 必填 | 示例 | 说明 |
---|---|---|---|---|
appid | string | 是 | wx520c15f417810387 | 公众号的唯一标识 |
secret | string | 是 | - | 公众号的 appsecret |
code | string | 是 | - | 填写第一步获取的 code 参数 |
grant_type | string | 是 | authorization_code | 填写为 authorization_code |
# 请求体 Request Payload
无
# 3. 返回参数
# 返回体 Response Payload
参数名 | 类型 | 说明 |
---|---|---|
access_token | string | 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同 |
expires_in | number | access_token接口调用凭证超时时间,单位(秒) |
refresh_token | string | 用户刷新access_token |
openid | string | 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID |
unionid | string | 用户统一标识(针对一个微信开放平台账号下的应用,同一用户的 unionid 是唯一的),只有当scope为"snsapi_userinfo"时返回 |
is_snapshotuser | number | 是否为快照页模式虚拟账号,只有当用户是快照页模式虚拟账号时返回,值为1 |
# 4. 注意事项
# 网页授权access_token和普通access_token的区别
- 微信网页授权是通过
OAuth2.0
机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权 access_token 可以进行授权后接口调用,如获取用户基本信息; - 其他微信接口,需要通过基础支持中的获取接口调用凭据接口来获取到的普通 access_token 调用。
# 网页授权的两种scope的区别说明
- 以
snsapi_base
为scope
发起的网页授权,是用来获取进入页面的用户的openid
的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面) - 以
snsapi_userinfo
为scope
发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。 - 用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
# UnionID机制
- 请注意,网页授权获取用户基本信息也遵循
UnionID
机制。即如果开发者有在多个公众号,或在公众号、移动应用之间统一用户账号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID
机制来满足上述需求。 UnionID
机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众账号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众账号),unionid是相同的。
# 5. 代码示例
请求示例
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_cod
返回示例
{
"access_token": "ACCESS_TOKEN",
"expires_in": 7200,
"refresh_token": "REFRESH_TOKEN",
"openid": "OPENID",
"unionid": "UNIONID",
"is_snapshotuser": 1
}
# 6. 错误码
以下是本接口的错误码列表,其他错误码可参考 通用错误码
错误码 | 错误描述 | 解决方案 |
---|---|---|
40029 | invalid code | 无效的code参数 |
# 7. 适用范围
本接口在不同账号类型下的可调用情况:
服务号 | 移动应用 | 网站应用 |
---|---|---|
仅认证 | ✔ | ✔ |
- 仅认证:表示仅允许企业主体已认证账号调用,未认证或不支持认证的账号无法调用
- ✔:该账号可调用此接口
- 其他未明确声明的账号类型,如无特殊说明,均不可调用此接口;