小程序授权获取微信用户手机号码

本文详细介绍如何在微信小程序中实现手机号码授权功能,包括wxml文件中授权标签的使用,通过wx.login获取用户登录态,及后台接口调用解析加密的手机号码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:小程序wxml文件中增加授权标签

  1.  <button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号码</button>

    第二歩

  2.  

wx.login({
      success:(res) =>{
        if (res.code) {
       

          let appid = 'xxxxxxx'
          let secret ='xxxxxxxxx'
          let js_code = res.code

          //发起网络请求
          wx.request({
            method: 'GET',
            header: { 'content-type': 'application/json' },
            url: "http://localhost:8080/platform-admin/api/login/getOpenId",
            data: {
              js_code: js_code,
              appid,
              secret,
              grant_type: 'authorization_code'
            },
            success:(res2)=>{
              console.log("xxx", JSON.stringify(res2.data));
              this.setData({
                wxCode: JSON.stringify(res2.data)
              });
            } 
          });
        } else {
          console.log('获取用户登录态失败!' + res.errMsg)
        }
       
      }
    });

打印结果: 

 第三歩:

 //测试获取手机号码
  getPhoneNumber: function (e) {
    console.log(e);
    // 参数e是绑定的授权方法自动传入过来的, 主要是为了拿到vi和encryptedData值从后台换取用户联系方式
    if ("getPhoneNumber:ok" != e.detail.errMsg) {
      wx.showToast({
        icon: 'none',
        title: '快捷登陆失败'
      })
      return;
    }
    var iv = e.detail.iv;
    var encryptedData = e.detail.encryptedData;
    // this.data.wxCode, 定义wxCode变量,并在onShow()方法中调用小程序login方法获取code值赋予this.data.wxCode
    var code = this.data.wxCode;
    var _this = this;
    //调用后台接口获取用户手机号码
    //发起网络请求
    wx.request({
      method: 'POST',
      header: { 'content-type': 'application/x-www-form-urlencoded' },
      // header: { 'content-type': 'application/json;charset=UTF-8'},
      url: "http://localhost:8080/platform-admin/api/phone/decode/wxapp/phone",
      data: {
        encrypted: encryptedData,
        iv: iv,
        code: code
      },
      success: function (data) {
        // 获取到的手机号码
        // var phone = data.data.data
        console.log("phone",data.data.data)
      },
      fail: function (msg) {
      }
    });

  },

打印结果:

注意:下面图片需要手机扫码后授权 ,授权后才可以获取手机号码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值