微信開發之小程式獲取手機號授權登入

lvxiangan發表於2018-05-29

小程式中有很多地方都會用到註冊使用者資訊的地方,使用者需要填寫手機號等,有了這個元件可以快速獲取微信繫結手機號碼,無須使用者填寫。


官方文件說明


1.getPhoneNumber這個元件通過button來實現(別的標籤無效)。將button中的open-type=“getPhoneNumber”,並且繫結bindgetphonenumber事件獲取回撥。

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>

2.在使用這個元件之前必須先呼叫login介面,如果沒有呼叫login點選button時會提示先呼叫login。

  1. App({    
  2.     onLaunch: function () {    
  3.         wx.login({    
  4.             success: function (res) {    
  5.                 if (res.code) {    
  6.                     //發起網路請求    
  7.                     console.log(res.code)    
  8.                 } else {    
  9.                     console.log('獲取使用者登入態失敗!' + res.errMsg)    
  10.                 }    
  11.             }    
  12.         });    
  13.     }    
  14. }) 

3.通過bindgetphonenumber繫結的事件來獲取回撥。回撥的引數有三個,

errMsg:使用者點選取消或授權的資訊回撥。

iv:加密演算法的初始向量(如果使用者沒有同意授權則為undefined)。

encryptedData: 使用者資訊的加密資料(如果使用者沒有同意授權同樣返回undefined)




  1. getPhoneNumber: function(e) {     
  2.     console.log(e.detail.errMsg)     
  3.     console.log(e.detail.iv)     
  4.     console.log(e.detail.encryptedData)     
  5.     if (e.detail.errMsg == 'getPhoneNumber:fail user deny'){    
  6.       wx.showModal({    
  7.           title: '提示',    
  8.           showCancel: false,    
  9.           content: '未授權',    
  10.           success: function (res) { }    
  11.       })    
  12.     } else {    
  13.       wx.showModal({    
  14.           title: '提示',    
  15.           showCancel: false,    
  16.           content: '同意授權',    
  17.           success: function (res) { }    
  18.       })    
  19.     }    
  20.   } 

4.最後我們需要根據自己的業務邏輯來進行處理,如果使用者不同意授權的話可能我們會有一個讓他手動輸入的介面,如果不是強制獲取手機號的話可以直接跳轉頁面進行下一步。(使用者不同意授權errMsg返回‘getPhoneNumber:fail user deny’)

5.使用者同意授權,我們可以根據login時獲取到的code來通過後臺以及微信處理拿到session_key,最後通過app_id,session_key,iv,encryptedData(使用者同意授權errMsg返回‘getPhoneNumber:ok’)

6.解密的方法可以去微信官方開發文件檢視,有很詳細說明。

相關文章