微信快捷登录
作者:Yuan Tang
更新于:9 个月前
字数统计:645 字
阅读时长:2 分钟
获取令牌
将 组件 https://developers.weixin.qq.com/miniprogram/dev/component/button.htmlopen-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过事件回调如 bindgetphonenumber 获取到动态令牌code,然后把code传到开发者后台,并在开发者后台调用微信后台提供的 接口,通过https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/phonenumber/phonenumber.getPhoneNumber.htmlcode来换取用户手机号。每个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 | 动态令牌。可通过动态令牌换取用户手机号。使用方法详情 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/phonenumber/phonenumber.getPhoneNumber.html |
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 https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/token/api_authorizer_token.html
请求参数
返回参数
| 属性 | 类型 | 说明 |
|---|---|---|
| errcode | number | 错误码 |
| errmsg | string | 错误信息 |
| phone_info | object | 用户手机号信息 |
| 属性类型说明 phoneNumberstring 用户绑定的手机号(国外手机号会有区号)purePhoneNumberstring 没有区号的手机号 countryCodestring 区号 watermarkobject 数据水印属性类型说明 timestampnumber 用户获取手机号操作的时间戳 appidstring 小程序 appid |
请求数据示例
json
{
"code": "e31968a7f94cc5ee25fafc2aef2773f0bb8c3937b22520eb8ee345274d00c144"
}返回数据示例
json
{
"errcode": 0,
"errmsg": "ok",
"phone_info": {
"phoneNumber": "xxxxxx",
"purePhoneNumber": "xxxxxx",
"countryCode": 86,
"watermark": {
"timestamp": 1637744274,
"appid": "xxxx"
}
}
}错误码
| 错误码 | 错误码取值 | 解决方案 |
|---|---|---|
| -1 | system error | 系统繁忙,此时请开发者稍候再试 |
| 40029 | code 无效 | js_code 无效 |
