# 换取用户授权凭证

调试工具

接口应在服务器端调用,不可在前端(小程序、网页、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

参数名类型必填示例说明
appidstringwx520c15f417810387公众号的唯一标识
secretstring-公众号的 appsecret
codestring-填写第一步获取的 code 参数
grant_typestringauthorization_code填写为 authorization_code

# 请求体 Request Payload

# 3. 返回参数

# 返回体 Response Payload

参数名类型说明
access_tokenstring网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_innumberaccess_token接口调用凭证超时时间,单位(秒)
refresh_tokenstring用户刷新access_token
openidstring用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
unionidstring用户统一标识(针对一个微信开放平台账号下的应用,同一用户的 unionid 是唯一的),只有当scope为"snsapi_userinfo"时返回
is_snapshotusernumber是否为快照页模式虚拟账号,只有当用户是快照页模式虚拟账号时返回,值为1

# 4. 注意事项

# 网页授权access_token和普通access_token的区别

  1. 微信网页授权是通过 OAuth2.0 机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权 access_token 可以进行授权后接口调用,如获取用户基本信息;
  2. 其他微信接口,需要通过基础支持中的获取接口调用凭据接口来获取到的普通 access_token 调用。

# 网页授权的两种scope的区别说明

  1. snsapi_basescope 发起的网页授权,是用来获取进入页面的用户的 openid 的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
  2. snsapi_userinfoscope 发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
  3. 用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

# UnionID机制

  1. 请注意,网页授权获取用户基本信息也遵循 UnionID 机制。即如果开发者有在多个公众号,或在公众号、移动应用之间统一用户账号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用 UnionID 机制来满足上述需求。
  2. 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. 错误码

以下是本接口的错误码列表,其他错误码可参考 通用错误码

错误码错误描述解决方案
40029invalid code无效的code参数

# 7. 适用范围

本接口在不同账号类型下的可调用情况:
服务号移动应用网站应用
仅认证
  • 仅认证:表示仅允许企业主体已认证账号调用,未认证或不支持认证的账号无法调用
  • ✔:该账号可调用此接口
  • 其他未明确声明的账号类型,如无特殊说明,均不可调用此接口;