首頁 > 軟體

微信小程式登入方法之授權登陸及獲取微信使用者手機號

2022-07-24 14:01:25

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

 使用說明注意:

    呼叫 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);
                }
            })
    })
  }

獲取手機號方法可選引數 

引數型別說明
phoneNumberString使用者繫結的手機號(國外手機號會有區號)
purePhoneNumberString沒有區號的手機號
countryCodeString區號

 後端返回的資料

獲取得到的開放資料為以下 json 結構:

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

結束語

到此這篇關於微信小程式登入方法之授權登陸及獲取微信使用者手機號的文章就介紹到這了,更多相關微信小程式授權登陸及獲取手機號內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com