微信快捷登录
刀刀
0字
0分钟
2026/8/16
获取令牌
将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过事件回调如 bindgetphonenumber 获取到动态令牌code,然后把code传到开发者后台,并在开发者后台调用微信后台提供的 phonenumber.getPhoneNumber 接口,通过code来换取用户手机号。每个code有效期为 5 分钟,且只能消费一次。
温馨提示
getPhoneNumber 返回的 code 与 wx.login 返回的 code 作用是不一样的,不能混用。
代码示例
html
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
Page({ getPhoneNumber (e) { console.log(e.detail.code) // 调用登录接口 } })返回参数说明
| 参数 | 类型 | 说明 | 最低版本 |
|---|---|---|---|
| code | String | 动态令牌。可通过动态令牌换取用户手机号。使用方法详情 phonenumber.getPhoneNumber 接口 |
bug
出现 getPhoneNumber:fail:access denied 。
因为该账号未认证,官方文档明确表明微信小程序要完成认证才可使用。
拓展:获取手机号
功能描述
该接口用于将 code 换取用户手机号。 说明,每个 code 只能使用一次,code 的有效期为 5min。
调用方式
HTTPS 调用
txt
POST https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=ACCESS_TOKEN第三方调用
- 调用方式以及出入参和 HTTPS 相同,仅是调用的 token 不同
- 该接口所属的权限集 id 为:18
- 服务商获得其中之一权限集授权后,可通过使用authorizer_access_token代商家进行调用
请求参数
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
| access_token | string | 是 | 接口调用凭证,该参数为 URL 参数,非 Body 参数。使用access_token或者authorizer_access_token |
| code | string | 是 | 手机号获取凭证 |
返回参数
| 属性 | 类型 | 说明 |
|---|---|---|
| errcode | number | 错误码 |
| errmsg | string | 错误信息 |
| phone_info | object | 用户手机号信息 |
| phoneNumber | string | 用户绑定的手机号(国外手机号会有区号) |
| purePhoneNumber | string | 没有区号的手机号 |
| countryCode | string | 区号 |
| watermark | object | 数据水印 |
| timestamp | number | 用户获取手机号操作的时间戳 |
| appid | string | 小程序 appid |
错误码具体含义如下:
| 错误码 | 错误码取值 | 解决方案 |
|---|---|---|
| -1 | system error | 系统繁忙,此时请开发者稍候再试 |
| 40029 | code 无效 | js_code 无效 |
json
{
"code": "e31968a7f94cc5ee25fafc2aef2773f0bb8c3937b22520eb8ee345274d00c144"
}json
{
"errcode": 0,
"errmsg": "ok",
"phone_info": {
"phoneNumber": "xxxxxx",
"purePhoneNumber": "xxxxxx",
"countryCode": 86,
"watermark": {
"timestamp": 1637744274,
"appid": "xxxx"
}
}
}