小程序获取直接获取用户绑定的微信手机号

小程序获取用户手机号

  • 触发获取事件
        • 使用方法
        • 注意

触发获取事件

获取微信用户绑定的手机号,需先调用wx.login接口。

因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发

使用方法

需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据, 然后在第三方服务端结合 session_key 以及 app_id 进行解密获取手机号。


注意

在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。

// login.js
// 微信一键登录
  getPhoneNumber (e) {
    console.log(e);
    // 如果允许授权
    if (e.detail.errMsg === 'getPhoneNumber:ok') {
      this.setData({
        loginType: 'wechat'
      })
      var data = e.detail // 后端解析需要用到的数据
      data['code'] = wx.getStorageSync('code') // wx.login获取的code以验证用户身份
      appletLogin(data).then(res => { // 响应接口
        console.log(res);
        this.loginSuccessFn(res) // 成功授权并登录开始缓存登录状态
      }).catch(err => {
        console.log(err); // 验证失败

      })
    } else {
      // 拒绝授权
    }
  },

查看打印授权事件console.log(e)
小程序获取直接获取用户绑定的微信手机号_第1张图片
后端加密解析算法见文档https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html

你可能感兴趣的:(小程序)