『壹』 小程序-用戶授權/授權後的信息讀取流程
在小程序中,不允許直接彈出用戶授權的選擇框,所以需要開發人員在界面上來設置提示信息,誘導用戶點擊,然後完成用戶數據的錄入和存取。在開發的過程中,某些請求是依託用戶登錄之後獲取到的openId才能繼續執行的,所以在頁面上,某些數據渲染之前需要判斷用戶是否登陸,如若沒有登錄,怎樣設計更好的交互來讓用戶登錄。
使用小程序時,首先會進入到app.js這個文件中,這個文件里包含了倆個方法,一個是wx.login(),另一個是wx.getSetting(),wx.login()的目的是為了在用戶登陸之後獲取到一個對應的 code 值,然後通過這個值去自己的後台換取一個openId;wx.getSetting()第一是為了判斷用戶的授權范圍,另一個是獲取對應許可權內的信息,比如說,用戶授權小程序可以使用自己的基本信息,就可以在這個方法中獲取到用戶的頭像、微信名、微信設置的城市這些欄位,這就是一些需要掌握的基本流程,具體怎麼實現登錄呢?
在小程序中,官方給出了一種解決方案-button按鈕:
在這個按鈕中,有幾個屬性:
● type :按鈕的類型,可以設置為primary,背景色為綠色
● wx:if :顯示條件,內容分別為hasUserInfo和canIUse倆個欄位,同時為真即可顯示(倆個欄位均需要在data中初始化賦值)
● open-type :按鈕的功能類型,getUserInfo是為了獲取基本信息(也可以設置為其他→getPhoneNumber:獲取用戶手機號)
● bindgetuserinfo :綁定的點擊事件。在js中寫對應的邏輯
在用戶點擊按鈕之後,會出現一個彈窗,確定用戶是否授權 :
當用戶點擊允許之後,進入我們綁定的getUserInfo函數中:
在執行邏輯中,首先通過wx.login()方法獲取到用戶對應的openId,方便後續的操作,然後再通過wx.getUserInfo()來獲取到用戶的基本信息,發送請求,將基本信息入庫存儲,或者展示到頁面上,就完成了登錄流程。
1.在登陸中可能會涉及到多個頁面登陸成功之後的狀態同步,可以通過 app.gloableData 來實現,在全局對象中設置一個欄位,然後不論在哪個頁面實現了登錄,都可以通過全局對象來完成更新。
2.在 獲取用戶信息 的時候,有時候需要獲取的是 中文類型 的數據,可以在 wx.getSetting() 的請求體中加一個 lang:'zh_CN'。 這樣獲取到的數據就是中文格式的了
『貳』 微信小程序獲取用戶openId、手機號
對於第一次實現小程序獲取握慎謹用戶手機號、用戶信息功能的程序猿來說,有一個著手的思路可以事半功倍。本文可以給你提供這個思路,助你快速准確完成需求。
調用wx.login,在成功回調中孝派,拿自己小程序的appId、secret請求介面 url: ' https://api.weixin.qq.com/sns/jscode2session?appid=' + appId + '&secret=' + secret + '&js_code=' +code + '&grant_type=authorization_code',請求成功即可拿到openid和session-key
小程序的appId必須要在微信公眾平台完成微信認證(裡面需要上傳一些企業的一些證件和信息)才能有獲取用戶手機號的許可權
最後拿用戶的獲取到的e.detail.iv、和e.detail.encryptedData(加密的手機號)和前面拿到過的session-key傳給後台,交給後台解密即可
具體解密規則參段基考官方文檔:( https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html )
『叄』 微信小程序獲取用戶信息昵稱頭像重新授權
在「發現」里找到「小程序」然後在裡面刪除這個小程序,最後搜索這個小程序,會重新提示你授權登錄信息。
『肆』 微信小程序的怎麼獲取用戶微信id
使用wx.getUserInfo(Object object),調用前需要 用戶授權 scope.userInfo。
示例代碼
// 必須是在用戶已經授權的情況下調用
wx.getUserInfo({
success: function(res) {
var userInfo = res.userInfo
var nickName = userInfo.nickName
var avatarUrl = userInfo.avatarUrl
var gender = userInfo.gender //性別 0:未知、1:男、2:女
var province = userInfo.province
var city = userInfo.city
var country = userInfo.country
}
})
(4)小程序如何讀取用戶微信號擴展閱讀
小程序用戶信息組件示例代碼
Page({
data: {
canIUse: wx.canIUse('button.open-type.getUserInfo')
},
onLoad: function() {
// 查看是否授權
wx.getSetting({
success (res){
if (res.authSetting['scope.userInfo']) {
// 已經授權,可以直接調用 getUserInfo 獲取頭像昵稱
wx.getUserInfo({
success: function(res) {
console.log(res.userInfo)
}
})
}
}
})
},
bindGetUserInfo (e) {
console.log(e.detail.userInfo)
}
})
『伍』 微信小程序獲取用戶信息、獲取用戶手機號碼
微信小程序 在獲取用戶信息的時候 有特定的要求 :
button 按鈕中open-type有兩種方式獲取用戶的信息:getUserInfo/getPhoneNumber
下面兩種信息就是直接展示用戶頭像和用戶微信名但不可獲取:
下面我們主要介紹獲取微信綁定的手機號的問題:(MPvue模板)
bindGetUserInfo函數中的Even裡麵包好detail裡面會有三個參數:
返回參數的話是需要解密才能使用的,在這里介紹一下第三種使用雲調用直接獲取開放數據的方式(前端自己解密不需要調用後端介面了~):
1、首先你的微信小程序是需要開通雲開發的。(否則的話在你獲取星系以後沒回參數裡面是沒有cloudID的)。
2、在雲開發裡面選擇雲函數然後新建雲函數(注意新建雲函數的名字下面需要用到的)
3、接下就是在獲取用戶信息以後調用函數解密:(mp vue 使用的話需要wx.clould.init()初始化 原生的可以忽略直接調用)
4、success :callback裡面res 裡麵包含了當前微信賬號大量信息:如手機賬號(res.result.weRunData.data.phoneNumber)
5、剩下的就簡單多了 可以拿著手機號碼進行信任登陸了 !