1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

微信小程序获取用户手机号码的解析示例

小编介绍

大家好,我是本际云服务器推荐网的小编小本本,今天要和大家分享的是小程序开发中获取用户手机号码的方法。

微信小程序获取用户手机号码的解析示例

获取用户手机号码的步骤

获取用户手机号码通常需要分为以下几步:

  1. 点击页面获取授权按钮
  2. 获取用户授权参数
  3. 根据加解密算法解密手机号码

下面我们来详细介绍以上三步的实现。

前端代码

以下是前端代码:

<!--index.wxml-->
<view>
  <view>
    <button type="primary" open-type="getUserInfo"
      bindgetuserinfo="getUserProfile" bindtap="getUserProfile">获取用户信息</button>
    <button open-type="getPhoneNumber" type="primary"
      bindgetphonenumber="onGetPhoneNumber">获取手机号码</button>
  </view>
  <view>
    ...
  </view>
</view>

其中,type="primary"表示按钮类型为主色调,open-type属性可以设置获取用户信息或手机号码的授权类型,bindgetphonenumber="onGetPhoneNumber"表示获取手机号码授权成功后会调用名为onGetPhoneNumber的回调函数。

获取授权码

以下是前端代码调用我们自己的后台调用微信服务端获取授权码的过程:

onGetPhoneNumber(e) {
  var that = this;
  wx.login({
    success (res) {
      if (res.code) {
        console.log('检查用户登录状态,获取用户电话号码!', res)
        wx.request({
          url: '自己的获取授权的服务器地址',
          data: {code: res.code},
          header: {'content-type': 'application/json'},
          success: function(res) {
            console.log("获取授权码,获取授权openid,session_key",res);
            var userphone=res.data.data;
            wx.setStorageSync('userphoneKey',userphone);
            //解密手机号
            var msg = e.detail.errMsg;
            var sessionID=wx.getStorageSync('userphoneKey').session_key;
            var encryptedData=e.detail.encryptedData;
            var iv=e.detail.iv;
            if (msg == 'getPhoneNumber:ok') {//这里表示获取授权成功
              wx.checkSession({
                success:function(){
                  //请求服务端解密手机号
                  that.deciyption(sessionID,encryptedData,iv);
                },
                fail:function(){
                  //that.userlogin()
                }
              })
            }
          },
          fail: function(res) {
            console.log("fail",res);
          }
        })
      } else {
        console.log('登录失败!' + res.errMsg)
      }
    }
  })
}

其中,参数code用于后台调用微信服务端获取授权码。session_key用于解密手机号码时需要的密码,encryptedDataiv分别对应获取到的加密数据和加密算法初始向量。

服务端解密手机号码</

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7169.html