获取手机号
收藏
我的收藏

获取用户绑定的手机号。需要用户主动点击 button 组件后才能发起手机号的获取。
注意:此能力仅支持小程序通过试运营期后可用,默认获取权限,无需申请;

注意事项

    小程序对获取用户手机号能力的使用场景需符合平台要求,平台允许的使用场景如下:
    在注册/登录场景,通过获取手机号,简化注册/登录流程;实现用户在小程序下的账号打通。
    在账户绑定场景,手机号作为唯一凭证,用于关联小程序的账号、权益、资产等数据互通。
    在交易场景,通过获取手机号,查询用户订单信息或完成用户订单/物流等提醒触达。
    使用(用户点击 button)前需先调用 tt.login 接口。如果在回调中调用 tt.login会刷新登录态,导致登录后换取的 session_key 与手机号码加密时使用的 session_key 不同,从而导致解密失败。
    基础库 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 } }