接口描述
网站、微信公众号或移动 App 使用微信登录获取用户授权的临时票据 code 后,调用此接口验证 code,获取 CIAM 的 Access Token 和 ID Token,完成登录。
CIAM 会使用微信的 unionid 或 openid 关联本地用户 (优先使用 unionid),如果用户不存在则自动创建新用户。如果登录成功,CIAM 会根据认证源的属性映射配置将微信侧返回的用户信息映射到本地用户数据上。
说明:
微信公众号和移动 App 如需获取用户的昵称、头像等信息,请确保以
snsapi_userinfo
为 scope
发起授权。支持的应用类型
Web 应用、单页应用、移动 App。
请求方法
POST
请求路径
/oauth2/token
请求 Content-Type
application/json
请求示例
POST /oauth2/token HTTP/1.1Content-Type: application/jsonHost: 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_userinfo 为 scope 发起授权。 |
正常响应示例
HTTP/1.1 200 OKContent-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 RequestContent-Type: application/json;charset=UTF-8{"error" : "invalid_grant","error_description" : "WeChat error: 40029"}
用户状态异常(如被锁定或冻结)。
HTTP/1.1 400 Bad RequestContent-Type: application/json;charset=UTF-8{"error" : "invalid_grant","error_description" : "Abnormal user status"}
认证源不存在或未启用。
HTTP/1.1 400 Bad RequestContent-Type: application/json;charset=UTF-8{"error" : "invalid_auth_source","error_description" : "Auth source not found or disabled"}
认证源不是
微信小程序内登录
认证源。HTTP/1.1 400 Bad RequestContent-Type: application/json;charset=UTF-8{"error" : "invalid_auth_source","error_description" : "Wrong auth source type"}
认证源未关联应用。
HTTP/1.1 400 Bad RequestContent-Type: application/json;charset=UTF-8{"error" : "invalid_auth_source","error_description" : "Auth source and application not associated"}