字节跳动小程序开发组件文档 获取手机号

由 卓别林 创建, 最后一次修改 2019-08-09

获取用户绑定的手机号。需要用户主动通过 button 组件的点击来触发后才能发起获取手机号接口。

注意事项


  • 请谨慎使用,仅可在登陆时使用!!!若用户举报较多或被发现在不必要场景下使用,字节跳动有权永久回收该小程序的该接口权限。
  • 使用(用户点击button)前需先调用tt.login接口。如果在回调中调用 tt.login 会刷新登录态,导致登陆后换取的 sessionKey 与手机号码加密时使用的 sessionKey 不同,从而导致解密失败。
  • 基础库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 错误信息
encryptedData string 包括敏感数据在内的完整用户信息的加密数据
iv string 加密算法的初始向量

errMsg为发生错误时具体的错误信息:

  • 开放平台没有权限获取手机号:platform auth deny。若平台封禁了某开发者该权限时可能返回或者是非企业小程序也会返回此信息。
  • 未在小程序平台登录:not login。开发者看到此信息后应当执行登录操作。
  • 用户没有绑定手机号或用户拒绝授权:auth deny。
  • 其他错误:internal error。

数据解密


参考敏感数据处理在开发者后台解密。揭秘后获取得到的数据形式如下:

{
  "phoneNumber": "138xxxxxxxx",     // 用户绑定的手机号(国外手机号会有区号)
  "purePhoneNumber": "138xxxxxxxx", // 没有区号的手机号
  "countryCode": "86",              // 区号
  "watermark": {
    "appid": "ttxxxxxxxxxxxxxxxx",
    "timestamp": 15000000000000000
  }
}


以上内容是否对您有帮助:
二维码
建议反馈
二维码