小程序 - 微信授权登录 & 微信授权绑定手机号

用户在使用小程序时,经常需要授权登录,授权登录的作用是获取用户的基本信息,如头像、昵称以及openid等,openid可用于微信授权手机号、微信支付。

微信授权登录

.xhtml如下,wxLogin为自定义方法

.js如下

// 微信登录
wxLogin (e) {
  let reqUrl = api // 后台请求接口
  let signature = e.detail.signature
  let rawData = e.detail.rawData
  let encryptedData = e.detail.encryptedData
  let iv = e.detail.iv
  
  let reqData = {
    'signature': signature,
    'rawData': rawData,
    'encryptedData': encryptedData,
    'iv': iv
  }
  
  if (e.detail.userInfo) {
    wx.login({
      success: (res) => {
        let code = res.code
        reqData['code'] = code

        wx.request({
          url: reqUrl,
          method: 'POST',
          data: reqData,
          success: (res) => {
            let resData = res.data

            if (resData.code != 1) {
              console.log('fail')
            }
            else {
              let token = resData.data.data
              let openid = resData.data.openid
              let session3rd = resData.data.session3rd

              wx.setStorageSync("token", token)
              wx.setStorageSync("openid", openid)
              wx.setStorageSync("session3rd", session3rd)
            }
          }
        })
      }
    })
  }
},

微信授权绑定手机号

.xhtml如下,getPhoneNumber为自定义方法

.js如下

getPhoneNumber (e) {
    let reqUrl = api // 后台接口
    let encryptedData = e.detail.encryptedData
    let iv = e.detail.iv
    let session3rd = wx.getStorageSync("session3rd") // 由第一步"微信授权"操作后台返回
    let openid = wx.getStorageSync("openid")         // 由第一步"微信授权"操作后台返回
    let token = wx.getStorageSync("token")           // 由第一步"微信授权"操作后台返回
    let reqData = {
      'encryptedData': encryptedData,
      'iv': iv,
      '3rd_session': session3rd,
      'openid': openid
    }
    
    wx.request({
      url: reqUrl,
      header: {'token': token},
      method: 'POST',
      data: reqData,
      success: (res) => {
        let resData = res.data

        if (resData.code !== 1) {
          console.log('fail')
        }
        else {
          console.log('success')
        }
      }
    })
  },

 

值得注意的是:以上代码中的session3rd并不是固定的变量名,具体由后台同事声明,也可能是session_3rdsession_key

你可能感兴趣的:(小程序)