code2Verifyinfo
登录凭证校验。通过 wx.xxxLogin 获得临时登录凭证 (code) 后,传到开发者服务器,开发者服务器调用 code2verifyinfo 接口获取用户标识信息,可以用于构建自定义登录态。
调用方式
GET https://api.weixin.qq.com/donut/code2verifyinfo
请求参数
属性 | 类型 | 说明 |
---|---|---|
appid | string | 多端应用 ID,在多端应用控制台应用详情页可以查看;不是小程序 Appid,也不是移动应用 Appid |
appsecret | string | 多端应用secret,在多端应用控制台应用详情页可以查看;不是小程序 secret,也不是移动应用 secret |
code | string | 临时登录凭证,可通过 wx.weixinAppLogin、wx.weixinMiniProgramLogin、wx.phoneSmsLogin、wx.appleLogin、本机号码一键登录 button 获取 |
grant_type | string | 授权类型:,固定值为"authorization_code" |
{
appid: 'aaa',
appsecret: 'bbb',
code: 'ccc',
grant_type: 'authorization_code'
}
返回参数
属性 | 类型 | 说明 |
---|---|---|
errcode | number | 错误码 |
errmsg | string | 错误提示 |
login_info | object | 登录信息 |
user_info | object | 用户标识信息 |
错误码 errcode
errCode | 说明 |
---|---|
-1 | system error |
10001000 | code过期 |
10001001 | code错误 |
10001002 | appid错误 |
10001003 | appsecret错误 |
10001004 | grant_type错误 |
登录信息 login_info
属性 | 类型 | 说明 |
---|---|---|
type | string | 登录方式: weixinApp, weixinMiniProgram, phoneSms, apple, phoneOneClick |
login_time | number | 登录时间 |
用户标识信息 user_info
属性 | 类型 | 说明 |
---|---|---|
user_id | string | 多端用户ID |
openapp_info | object | 微信移动应用信息 |
miniprogram_info | object | 微信小程序信息 |
phone_info | object | 手机号信息 |
apple_info | object | 苹果信息 |
微信移动应用信息 openapp_info
- 当 type 是 weixinApp 的时候返回 openapp_info
属性 | 类型 | 说明 |
---|---|---|
appid | string | 微信移动应用appid |
openid | string | 微信移动应用对应的openid |
unionid | string | unionid |
headimgurl | string | 用户头像,最后一个数值代表正方形头像大小(有 0、46、64、96、132 数值可选,0 代表640*640正方形头像),用户没有头像时该项为空 |
nickname | string | 普通用户昵称 |
微信小程序信息 miniprogram_info
- 当 type 是 weixinMiniProgram 的时候返回 miniprogram_info
属性 | 类型 | 说明 |
---|---|---|
appid | string | 微信小程序appid |
openid | string | 微信小程序对应的openid |
unionid | string | unionid,小程序需要绑定在微信开放平台才会返回;否则为空 |
手机号信息 phone_info
- 当 type 是 phoneSms 和 phoneOneClick 的时候返回 phone_info
属性 | 类型 | 说明 |
---|---|---|
phone | string | 手机号 |
苹果信息 apple_info
- 当 type 是 apple 的时候返回 apple_info
属性 | 类型 | 说明 |
---|---|---|
bundleid | string | 苹果应用id |
apple_user_id | string | 苹果用户id |
返回示例
{
errcode: 0,
login_info: {
type: 'weixinApp',
login_time: 12345678,
appid: 'aaa',
},
user_info: {
user_id: 'xxx',
openapp_info: {
appid: 'bbb',
openid: 'ccc',
unionid: 'ddd',
headimgurl: 'HEADIMGURL',
nickname: 'NICKNAME'
},
phone_info: {
phone: '137xxxxxxx'
},
apple_info: {
bundleid: 'eee',
apple_user_id: 'fff'
},
miniprogram_info: {
appid: 'bbb',
openid: 'ccc',
unionid: 'ddd'
},
}
}
账号绑定说明
账号之间没有绑定
- 当 type 是 weixinMiniProgram(小程序登录) 的时候返回 miniprogram_info
- 当 type 是 weixinApp(微信登录) 的时候返回 openapp_info
- 当 type 是 phoneSms(手机验证码登录) 和 phoneOneClick(一键本机号码登录) 的时候返回 phone_info
- 当 type 是 apple 的时候返回 apple_info
账号之间有绑定
- 例如,小程序登录(wx.weixinMiniProgramLogin)后通过
wx.miniapp.bindPhone
引导用户完成了手机号绑定,那么,当 type 是 weixinMiniProgram(小程序登录) 的时候会同时返回 miniprogram_info 和 phone_info - 同理,手机登录(wx.phoneSmsLogin)后通过
wx.miniapp.bindWeixin
引导用户完成了微信绑定,那么,当 type 是 phoneSms(手机验证码登录) 的时候会同时返回 phone_info 和 openapp_info - 以此类推,不同的登录方式之间可以引导进行账号的绑定;code2Verifyinfo 接口会依据 type 以及已绑定的账号类型情况而同时返回对应的信息
常问问题
Q:为什么我的返回信息中没有 phone_info / openapp_info?
A:code2Verifyinfo 接口根据开发者调用的登录方式和账号间的绑定关系来返回对应信息。
场景一:账号间没有绑定关系
比如,传入微信小程序登录 wx.weixinMiniProgramLogin 获取的 code,code2verifyinfo 将返回微信小程序信息 miniprogram_info,但返回信息中不包含微信移动应用信息 openapp_info,手机号信息 phone_info,苹果信息 apple_info
场景二:账号间存在绑定关系
比如,某用户的手机号和苹果账号绑定,如果传入其中一种登录方式获取的 code,code2verifyinfo 将同时返回手机号信息 phone_info 和苹果信息 apple_info
开发者可以调用 wx.miniapp.checkBindInfo 检查当前用户是否已经绑定某种账号
Q:wx.login、wx.miniapp.login 获取的 code 可以在 code2verifyinfo 使用吗?
A:wx.login、wx.miniapp.login 获取的 code 不支持在 code2verifyinfo 使用。
Q:调用 code2verifyinfo 失败,报错为 {"errcode": 43001, "errmsg": "系统失败 rid: xxx"},如何解决?
A:请使用 get 发起请求。