微信小程序登錄方法之授權登陸及獲取微信用戶手機號

先看一下小程序的登陸流程

 使用說明註意:

    調用 auth.code2Session 接口,換取 用戶唯一標識 OpenID 、 用戶在微信開放平臺帳號下的唯一標識UnionID(若當前小程序已綁定到微信開放平臺帳號) 和 會話密鑰 session_key。

    之後開發者服務器可以根據用戶標識來生成自定義登錄態,用於後續業務邏輯中前後端交互時識別用戶身份。

    註意事項

    會話密鑰 session_key 是對用戶數據進行 加密簽名 的密鑰。為瞭應用自身的數據安全,開發者服務器不應該把會話密鑰下發到小程序,也不應該對外提供這個密鑰。

    臨時登錄憑證 code 隻能使用一次

第一步, 調用微信登陸方法 wx.login() 獲取臨時登錄憑證code ,並回傳到開發者服務器。

//微信登錄方法 wx.login()
 
//調用微信登錄方法 wx.login() 獲取臨時登錄憑證code ,並回傳到開發者服務器。
 
login() {
    wx.login({
        success: (ress) => {
            wx.request({
                url: '服務器後端接口',
                data: {
                    code: ress.code
                },
                success: (result) => {
                    console.log(result.data.openId); //獲取到openid
                }
            })
        }, fail: (error) => {
            console.log('登錄失敗!' + error);
        }
    })
}

微信登錄的一些參數 

​​​​​第二步,獲取用戶信息,點擊事件,獲取用戶授權,用戶同意後然後返回信息

//利用後端接口獲取openid,獲取到自己系統賬號的id,當前小程序已綁定到微信開放平臺帳號,與微信號綁定,使得下次登錄微信賬號就跟小程序系統的賬號綁定。
 
//getUserProfile 方法
 
getUserProfile() {
    var that = this
    wx.getUserProfile({
        desc: '用於獲取用戶微信個人信息',// 聲明獲取用戶個人信息後的用途,後續會展示在彈窗中,請謹慎填寫
        success: (res) => {
            wx.login({
                success: (ress) => {
                    wx.request({
                        url: '服務器後端接口',
                        data:{
                            code:ress.code,
                        },
                        success: (result) => {
                            console.log(result.data.openId); //獲取到openid
                            wx.request({
                                url: '服務器後端接口',
                                data:{
                                    openId:result.data.openId,
                                },
                                success: (results) => {
                                    console.log(results.data.session_key);//拿到自己的系統賬號
                                },
                                fail: (errors) => {
                                    console.log(errors);
                                }
                            })
 
                        },
                        fail: (error) => {
                            console.log(error);
                        }
                    })
                }
            })
        },
        fail: (err) => {
            console.log(err)
        }
 
    })
}

​​第三步,獲取用戶手機號

 獲取用戶手機號流程如下:

      wx.Login()方法 → 獲取登錄憑證(code)→將code發送到後端 → 後端拿到openid和session_key → 調用getPhoneNumber 方法  →  將 encryptedData 和 iv 傳給後端  →  後端獲得json

下面是官方獲取手機號介紹截圖 

//獲取手機號 html代碼
 
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
 
//獲取微信用戶手機號方法  
 
getPhoneNumber (e) {
    console.log(e.detail.code)
    console.log(e.detail.errMsg)
    console.log(e.detail.iv)
    wx.login({
        success:res =>{
            console.log(res.code);
            wx.request({
                url:'服務器後端接口',
                data:{
                   'encryptedData':e.detail.encryptedData,
                   'iv':e.detail.iv,
                   'codes':e.detail.code
                },
                method:'GET',
                header:{
                    'content-type':'application/json'
                },
                success:function(res){
                    wx.setStorageSync('PhoneNumber',res.data.phoneNumber);
                    console.log("手機號為" + res.data.phoneNumber)
                },
                fail:function(err){
                    console.log(err);
                }
            })
    })
  }

獲取手機號方法可選參數 

參數 類型 說明
phoneNumber String 用戶綁定的手機號(國外手機號會有區號)
purePhoneNumber String 沒有區號的手機號
countryCode String 區號

 後端返回的數據

獲取得到的開放數據為以下 json 結構:

{
    "phoneNumber": "13580006666",
    "purePhoneNumber": "13580006666",
    "countryCode": "86",
    "watermark":
    {
        "appid":"APPID",
        "timestamp": TIMESTAMP
    }
}

結束語

到此這篇關於微信小程序登錄方法之授權登陸及獲取微信用戶手機號的文章就介紹到這瞭,更多相關微信小程序授權登陸及獲取手機號內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: