微信小程序登錄方法之授權登陸及獲取微信用戶手機號
先看一下小程序的登陸流程

使用說明注意:
調用 auth.code2Session 接口,換取 用戶唯一標識 OpenID 、 用戶在微信開放平臺帳號下的唯一標識UnionID(若當前小程序已綁定到微信開放平臺帳號) 和 會話密鑰 session_key。
之后開發(fā)者服務器可以根據用戶標識來生成自定義登錄態(tài),用于后續(xù)業(yè)務邏輯中前后端交互時識別用戶身份。
注意事項
會話密鑰 session_key 是對用戶數據進行 加密簽名 的密鑰。為了應用自身的數據安全,開發(fā)者服務器不應該把會話密鑰下發(fā)到小程序,也不應該對外提供這個密鑰。
臨時登錄憑證 code 只能使用一次
第一步, 調用微信登陸方法 wx.login() 獲取臨時登錄憑證code ,并回傳到開發(fā)者服務器。
//微信登錄方法 wx.login()
//調用微信登錄方法 wx.login() 獲取臨時登錄憑證code ,并回傳到開發(fā)者服務器。
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,獲取到自己系統(tǒng)賬號的id,當前小程序已綁定到微信開放平臺帳號,與微信號綁定,使得下次登錄微信賬號就跟小程序系統(tǒng)的賬號綁定。
//getUserProfile 方法
getUserProfile() {
var that = this
wx.getUserProfile({
desc: '用于獲取用戶微信個人信息',// 聲明獲取用戶個人信息后的用途,后續(xù)會展示在彈窗中,請謹慎填寫
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);//拿到自己的系統(tǒng)賬號
},
fail: (errors) => {
console.log(errors);
}
})
},
fail: (error) => {
console.log(error);
}
})
}
})
},
fail: (err) => {
console.log(err)
}
})
}??第三步,獲取用戶手機號
獲取用戶手機號流程如下:
wx.Login()方法 → 獲取登錄憑證(code)→將code發(fā)送到后端 → 后端拿到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 | 用戶綁定的手機號(國外手機號會有區(qū)號) |
| purePhoneNumber | String | 沒有區(qū)號的手機號 |
| countryCode | String | 區(qū)號 |
后端返回的數據
獲取得到的開放數據為以下 json 結構:
{
"phoneNumber": "13580006666",
"purePhoneNumber": "13580006666",
"countryCode": "86",
"watermark":
{
"appid":"APPID",
"timestamp": TIMESTAMP
}
}結束語
到此這篇關于微信小程序登錄方法之授權登陸及獲取微信用戶手機號的文章就介紹到這了,更多相關微信小程序授權登陸及獲取手機號內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Bootstrap~多級導航(級聯(lián)導航)的實現(xiàn)效果【附代碼】
下面小編就為大家分享一篇Bootstrap~多級導航(級聯(lián)導航)的實現(xiàn)效果【附代碼】。小編覺得挺不錯。希望對大家有所幫助。一起跟隨小編過來看看吧2016-03-03
setinterval()與clearInterval()JS函數的調用方法
這篇文章主要介紹了setinterval()與clearInterval()JS函數的調用方法,實例分析了setinterval()與clearInterval()的語法結構及使用技巧,需要的朋友可以參考下2015-01-01
JavaScript判斷變量是否為undefined的兩種寫法區(qū)別
這篇文章主要是對JavaScript判斷變量是否為undefined的兩種寫法區(qū)別進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12

