微信授权登录

最近更新时间:2024-09-18 11:31:01

我的收藏

接口描述

网站、微信公众号或移动 App 使用微信登录获取用户授权的临时票据 code 后,调用此接口验证 code,获取 CIAM 的 Access Token 和 ID Token,完成登录。
CIAM 会使用微信的 unionid 或 openid 关联本地用户 (优先使用 unionid),如果用户不存在则自动创建新用户。如果登录成功,CIAM 会根据认证源的属性映射配置将微信侧返回的用户信息映射到本地用户数据上。
说明:
在使用此接口前,建议您阅读相应的微信登录官方文档,了解详细的登录流程:网站应用微信登录微信公众号网页授权移动应用微信登录
微信公众号和移动 App 如需获取用户的昵称、头像等信息,请确保以 snsapi_userinfoscope 发起授权。

支持的应用类型

Web 应用、单页应用、移动 App。

请求方法

POST

请求路径

/oauth2/token

请求 Content-Type

application/json

请求示例

POST /oauth2/token HTTP/1.1
Content-Type: application/json
Host: sample.portal.tencentciam.com

{
"grant_type" : "http://tencentciam.com/oauth2/grant-type/social/wechat/code",
"client_id" : "TENANT_CLIENT_ID",
"client_secret" : "TENANT_CLIENT_SECRET",
"auth_source_id" : "MOCK_WECHAT_AUTH_SOURCE_ID",
"code" : "MOCK_CODE"
}

请求体 JSON 参数

JSON 路径
数据类型
描述
grant_type
String
填固定值 http://tencentciam.com/oauth2/grant-type/social/wechat/code
client_id
String
应用的 client_id。
client_secret
String
应用的 client_secret。Web 应用须传递此参数;单页应用和移动App 不传递此参数。
code
String
在微信端获取用户授权后得到的授权临时票据 code
auth_source_id
String
根据实际需求,选择如下任意一种认证源 ID:
PC 微信登录认证源 ID
微信网页登录认证源 ID
移动 App 微信登录认证源 ID
getUserInfo
Boolean
如果除了用户的微信 openid 和 unionid 外还需获取昵称、头像等用户信息,则此参数传 true,否则可以不传递此参数。
注意:此参数传 true 时,如果您使用的是微信公众号或移动 App,请确保以 snsapi_userinfoscope发起授权。

正常响应示例

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

{
"access_token" : "eyJraWQiOiI3NjVkMjlmYi05ODE1LTRmZGQtYmU5NS00NzJhOTYzZmQ5YmYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJNT0NLX1VTRVJfSUQiLCJhdWQiOiJURU5BTlRfQ0xJRU5UX0lEIiwibmJmIjoxNjQyMDYwMjY0LCJzY29wZSI6WyJvcGVuaWQiXSwiaXNzIjoiaHR0cHM6XC9cL3NhbXBsZS5wb3J0YWwudGVuY2VudGNpYW0uY29tIiwiZXhwIjoxNjQyMDYwNTY0LCJpYXQiOjE2NDIwNjAyNjQsImp0aSI6IjNlYjA3NGE1LTIwMzUtNDk1NS1hYjBmLTM1MjM3MmZjNzFjMiJ9.In1nErmTjH9Vqkd1iqM6mf58276jSbonENi5kvkakDfB-2Mc08OCm_rn4NoW0DoBu9ojXal5_g-DY5_XexznCmgfRKGw2Ey6GNXYFkHiGliEdwTBcfNKfgEZN7V3LuQUcHTlPWj_U5SHumGqwcvOcZPvEJuXMpBPWdZKDeJisMpBqdKmmEsWgX2hXhzgRIC3j7fNLoE6b-pZEFrmWbfYXbjq0BLhPpbMV8dZtrkfnuTVWh1P6EjagHXjZreSlx6fwqVRvNrmUqA4-b_CcoJw57g9zDLfWfOdMtSQShlKOSsy_dFVivGsDI9bXiFIUq9Zdah_2qNCU8t4CCDM0TqYug",
"refresh_token" : "4gCXN_3PuKIXG1MdhqxJWhHGpeC_sjphxwx6AqMsyENU-Hj2rEf94q1x0hkmg5oEEXw39z688sHfox1W-N-idNvmLpdASAxwGo_Z4zEvyueOOAUApZEJQoXPfu9oCu45",
"scope" : "openid",
"id_token" : "eyJraWQiOiI3NjVkMjlmYi05ODE1LTRmZGQtYmU5NS00NzJhOTYzZmQ5YmYiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJNT0NLX1VTRVJfSUQiLCJhdWQiOiJURU5BTlRfQ0xJRU5UX0lEIiwiYXpwIjoiVEVOQU5UX0NMSUVOVF9JRCIsImlzcyI6Imh0dHBzOlwvXC9zYW1wbGUucG9ydGFsLnRlbmNlbnRjaWFtLmNvbSIsImV4cCI6MTY0MjA2MjA2NCwiaWF0IjoxNjQyMDYwMjY0LCJqdGkiOiJmYWRjY2Q4Yi0xMjg1LTRiYTQtOTU0OS02NWVmMTJhYjllOGQifQ.XFhK8OpbqKcEwk_bNUHSSYTKuQpVxQOOgBWrKIK2Gh78ou4Q2l7w-jXu7urRP_lFiOXuHss13vEByA9aHt54ZJyPSUiRkNOxDDXNyj6JkQlrK2nnFYAPlF9Hjob-Be8NmcM486l_SMJBGgCNpoXtPwKekkAuYOzomqU2lVrNyKjKK7sTB-3D6EVqC470eYX6xqHG4ASO8lGLvJMYeRLzbrumf95rsXaWC0iAJj0zxDq66ozqH2R3qj0aggxPR4mfie6VLGUvFv1pOeHDaYiLf6jTrfeI9FGDS7xdosqPuNGjISjn1GjfvbfJ1r-pQBf-eV53i5zrCwkOSFTwKbSFJQ",
"token_type" : "Bearer",
"expires_in" : 299
}

响应参数

参数
数据类型
描述
access_token
String
OAuth 2.0 Access Token (JWT)。
token_type
String
Token 类型,目前返回的是固定值 Bearer
expires_in
Number
Access Token 有效期,单位秒。
scope
String
Access Token scope。
refresh_token
String
OAuth 2.0 Refresh Token。
id_token
String
OIDC ID Token (JWT)。

异常响应示例

code 无效。
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8

{
"error" : "invalid_grant",
"error_description" : "WeChat error: 40029"
}
用户状态异常(如被锁定或冻结)。
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8

{
"error" : "invalid_grant",
"error_description" : "Abnormal user status"
}
认证源不存在或未启用。
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8

{
"error" : "invalid_auth_source",
"error_description" : "Auth source not found or disabled"
}
认证源不是 微信小程序内登录 认证源。
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8

{
"error" : "invalid_auth_source",
"error_description" : "Wrong auth source type"
}
认证源未关联应用。
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8

{
"error" : "invalid_auth_source",
"error_description" : "Auth source and application not associated"
}