美文网首页
微信小程序:获取用户手机号码

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

作者: 我的小小笔尖 | 来源:发表于2021-09-28 10:55 被阅读0次

    获取用户手机号码有两种方式,第一种方法现对复杂,需要有服务端解码才能获取到手机号码;第二种相对简单,只需要使用云函数即可获取。

    第二种方法如下:

    page.wxml

    使用 button,属性 open-type="getPhoneNumber"
    用户点击按钮,弹出授权对话框

      <view class="buttonWrap">
        <button 
          wx:if="{{!hasBindUser}}"
          class="bindUserButton" 
          open-type="getPhoneNumber" 
          bindgetphonenumber="getPhoneNumber">绑定手机号码</button>
      </view>
    
    page.js

    用户允许,则 e.detail.errMsg == 'getPhoneNumber:ok'
    使用 wx.cloud.callFunction 调用云函数 getPhoneNumber,传参 e.detail.cloudID
    成功,则获取手机号码 let phonenumber = res.result.openData.list[0].data.purePhoneNumber

      // 获取用户手机号码
      getPhoneNumber: function (e) {
        console.log('e', e)
        var that = this
        if(e.detail.errMsg == 'getPhoneNumber:ok') {
          // 允许
          wx.cloud.callFunction({
            name: 'getPhoneNumber',
            data: {
              id: e.detail.cloudID
            },
            success: res => {
              console.log('res', res)
              let phonenumber = res.result.openData.list[0].data.purePhoneNumber
              let openid = res.result.openid
              console.log('phonenumber, openid', phonenumber, openid)
              if(phonenumber) {
                // 远程绑定用户
                that.remoteBindUser(phonenumber, openid)
              }else {
                wx.showToast({
                  icon: 'none',
                  title: 'undefined',
                })
              }
            },
            fail: err => {
              console.log('err', err)
              wx.showToast({
                icon: 'none',
                title: 'fail',
              })
            },
            complete: () => {
              console.log('complete')
            }
          })
        }else {
          // 拒绝
          wx.showToast({
            icon: 'none',
            title: '绑定方可使用',
          })
        }
      },
    
    云函数

    return 返回对象中的 openData 中包含了手机号码

    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    
    cloud.init()
    
    // 云函数入口函数
    exports.main = async (event, context) => {
      const wxContext = cloud.getWXContext()
    
      const openData = await cloud.getOpenData({
        list: [event.id],
      })  
    
      return {
        openData,
        event,
        openid: wxContext.OPENID,
        appid: wxContext.APPID,
        unionid: wxContext.UNIONID,
      }
    }
    

    相关文章

      网友评论

          本文标题:微信小程序:获取用户手机号码

          本文链接:https://www.haomeiwen.com/subject/pvilnltx.html