获取手机号
收藏我的收藏
注意事项
- •小程序对获取用户手机号能力的使用场景需符合平台要求,平台允许的使用场景如下:
- ◦在注册/登录场景,通过获取手机号,简化注册/登录流程;实现用户在小程序下的账号打通。
- ◦在账户绑定场景,手机号作为唯一凭证,用于关联小程序的账号、权益、资产等数据互通。
- ◦在交易场景,通过获取手机号,查询用户订单信息或完成用户订单/物流等提醒触达。
- •基础库 1.14.0 开始支持。
- •触发按钮文案应为“授权手机号快捷登录”、“手机号码一键登录”等,禁止在用户进入小程序时就弹出获取手机号。
使用方法
需要将
<button>
组件 open-type
的值设置为 getPhoneNumber
。用户点击后会弹出一个授权弹窗让用户确认(若该用户账户未绑定手机号码会执行一次绑定手机号码的流程;授权弹窗每次使用都会弹出)。 用户同意后,开发者可以通过 bindgetphonenumber
事件回调获取到一个加密数据,开发者可以把该数据传回到自己的服务端进行解密获取手机号。扫码体验
代码示例
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumberHandler" ></button>
Page({ getPhoneNumberHandler(e) { console.log(e.detail.errMsg); console.log(e.detail.iv); console.log(e.detail.encryptedData); }, });
回调参数说明
参数 | 类型 | 说明 | 最低支持版本 |
errMsg | string | 错误信息 | 1.14.0 |
encryptedData | string | 包括敏感数据在内的完整用户信息的加密数据 | 1.14.0 |
iv | string | 加密算法的初始向量 | 1.14.0 |
cloudId | string | 敏感数据对应的开放数据 id,上云的小程序才会返回。 | 2.70.0 |
errMsg
表示发生错误时的具体错误信息:- •开放平台没有权限获取手机号:
platform auth deny
。若平台封禁某开发者权限时可能返回,或非企业小程序也会返回此信息。- •该小程序没有申请获取手机号权限:
no permission
。- •开放平台账号没有绑定手机号:
no phone number
。若用户宿主端没有绑定手机号,也会返回此信息。- •未在小程序平台登录:
not login
。开发者看到此信息后应当执行登录操作。- •用户没有绑定手机号或用户拒绝授权:
auth deny
。- •用户未登录:
invalid session
。- •其他错误:
internal error
。数据解密
{ "phoneNumber": "138xxxxxxxx", // 用户绑定的手机号(国外手机号会有区号) "purePhoneNumber": "138xxxxxxxx", // 没有区号的手机号 "countryCode": "86", // 区号 "watermark": { "appid": "ttxxxxxxxxxxxxxxxx", "timestamp": 15000000000000000 } }