小程序中获取手机号前提


小程序需企业认证,才可以获取用户的手机号,个人开发者是不能获取的

哔哔下


官方文档给出需先登录才可获取手机号 传送门
思路为:login登录获取code–>code传给后台–>后台根据code获取sessionKey
前台通过触发获取手机号事件得到加密数据–>传给后台,后台通过之前获取的
sessionKey来解密,并将数据返回给前台

注意项


code传给后台时后台需去访问官网给的接口去检验 传送门

撸码

  getPhoneNumber: function (e) {
    let _this = this;
    if (e.detail.errMsg == "getPhoneNumber:ok") {
      //校验是否过期
      wx.checkSession({
        success: function () {
          // session_key 未过期,并且在本生命周期一直有效
          _this.gettel(e);//获取手机号
        },
        fail: function () {
          // session_key 已经失效,需要重新执行登录流程
          wx.login({
            success: function (res) {
              wx.request({
                url: \'xxxxxx\',
                method: \'post\',
                data: {
                  code: res.code
                },
                header: {
                  \'Content-Type\': \'application/x-www-form-urlencoded\'
                },
                success: function (r) {
                  _this.gettel(e);//获取手机号
                },
                fail: function (err) {
                  console.log("登录失败");
                  console.log(err);
                }
              })
            }
          })
        }
      })
    } else {
      wx.showModal({
        title: \'提示\',
        content: \'需获取信息才可查看历史预约\',
      })
    }
  },
  gettel: function (e) {
    let _this = this;
    let iv = e.detail.iv;
    let encryptedData = e.detail.encryptedData;
    wx.request({
      url: \'xxxxxxxxxxxxxxxx\',
      method: \'post\',
      data: {
        iv: iv,
        encryptedData: encryptedData
      },
      header: {
        \'Content-Type\': \'application/x-www-form-urlencoded\'
      },
      success: function (res) {
        console.log(res);//手机号在这里面哦
        <!--let item = JSON.parse(res.data.data);-->
      },
      fail: function (err) {
        console.log(err);
      }
    })
  }

在哔哔下

wx.login首次登录我写在需要获取手机号时的page中onload事件中
因为login返回的code有时效,所以在需要的时候在调用

版权声明:本文为ybchen292原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chendada/p/11567585.html