小程序雲開發獲取手機號完整代碼

小程序雲開發獲取手機號完整代碼

效果圖:

小程序代碼

<button  open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">登錄</button>
  getPhoneNumber: function (e) {
    var that = this;
    if (!e.detail.errMsg || e.detail.errMsg != "getPhoneNumber:ok") {
      wx.showModal({
        content: '請打開設置授權手機號',
        showCancel: false
      })
      return;
    }
    wx.cloud.callFunction({
      name: 'getToken',  // 對應雲函數名
      data: {
        encryptedData: e.detail.encryptedData,
        iv: e.detail.iv,
        sessionCode: app.globalData.sessionCode    // 這個通過wx.login獲取,去了解一下就知道。這不多描述
      },
      success: res => {
        wx.hideLoading()
        console.log('成功拿到手機號,跳轉首頁',res)
        // 成功拿到手機號,跳轉首頁
        return
        wx.switchTab({
          url: '../index/index' // 這裏是要跳轉的路徑
        })
      },
      fail: err => {
        console.error(err);
        wx.showToast({
          title: '獲取手機號失敗',
          icon: 'none'
        })
      }
    })
  },

雲函數:

  • 步驟1: 新建node.js雲函數getToken

     

    image.png

  • 步驟2:因爲需要進行網絡請求,這裏使用request庫

     

    右擊getToken函數名,選擇在終端中打開

    image.png

  • 步驟3.下載 request 或 request-promise 模塊(request-promise模塊,可以使用promise,async和await)
    命令行:
    npm install --save request
    npm install --save request-promise
    如成功下載,則可見

    image.png

  • 步驟4:getToken下的index.js文件中

 

// 雲函數入口文件

const cloud = require('wx-server-sdk')

const requestpromise = require('request-promise');

var WXBizDataCrypt = require('./RdWXBizDataCrypt') // 用於手機號解密

cloud.init()

// 雲函數入口函數

exports.main = async (event, context) => {

 // 獲取 WX Context (微信調用上下文),包括 OPENID、APPID、及 UNIONID(需滿足 UNIONID 獲取條件)
 const wxContext = cloud.getWXContext()
 const appid = wxContext.APPID
  const AccessToken_options = {

    method: 'GET',

    url: 'https://api.weixin.qq.com/sns/jscode2session',

    qs: {
      appid:wxContext.APPID,

      secret:'xxxxxxxxxxxxxxxxxxx',  // 微信開發後臺可生成,唯有微信認證過的國內主體纔可有

      grant_type: 'authorization_code',

      js_code: event.sessionCode // 小程序中獲取過來的
    },
    json: true
  };
  const resultValue = await requestpromise (AccessToken_options);
  const pc = new WXBizDataCrypt(appid, resultValue.session_key)  // -解密第一步
  const data = pc.decryptData(event.encryptedData, event.iv)   // 解密第二步
  return { data }  
}

這裏的WXBizDataCrypt文件純js寫的,非官方給出的java,node,php等後端語言的demo,js文件我放
文件網盤裏了,有需要的自行下載,請點擊這裏 提取碼:i2ve

具體放置的位置如步驟3所示
至此,小程序便可得到解密後的用戶手機號,

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章