(1)代碼:主要介紹下獲取用戶信息部分
onLaunch: function () { // 展示本地存儲能力 var logs = wx.getStorageSync('logs') || [] logs.unshift(Date.now()) wx.setStorageSync('logs', logs) // 登錄 wx.login({ success: res => { // 發送 res.code 到后台換取 openId, sessionKey, unionId } }) // 獲取用戶信息 wx.getSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 已經授權,可以直接調用 getUserInfo 獲取頭像昵稱,不會彈框 wx.getUserInfo({ success: res => { // 可以將 res 發送給后台解碼出 unionId this.globalData.userInfo = res.userInfo // 由於 getUserInfo 是網絡請求,可能會在 Page.onLoad 之后才返回 // 所以此處加入 callback 以防止這種情況 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) } } })
onLaunch為小程序生命周期---小程序初始化
(2)獲取用戶數據
wx.getSetting({...})或者wx.openSetting({...})
開發者可以調用 wx.openSetting 打開設置界面,引導用戶開啟授權
參數:
obj.success 的成功回調函數參數:
wx.openSetting({
success:function(res){
}
})
或者
wx.openSetting({
success=>res{
}
})
AuthSetting
用戶授權設置信息
scope | 對應接口 | 描述 |
---|---|---|
scope.userInfo | wx.getUserInfo | 用戶信息 |
scope.userLocation | wx.getLocation, wx.chooseLocation | 地理位置 |
scope.address | wx.chooseAddress | 通訊地址 |
scope.invoiceTitle | wx.chooseInvoiceTitle | 發票抬頭 |
scope.invoice | wx.chooseInvoice | 獲取發票 |
scope.werun | wx.getWeRunData | 微信運動步數 |
scope.record | wx.startRecord | 錄音功能 |
scope.writePhotosAlbum | wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum | 保存到相冊 |
scope.camera | camera 組件 | 攝像頭 |
代碼:
// 獲取用戶信息 wx.openSetting({
/*接口調用成功的回調函數*/ success: res => {
/*success成功回調函數的參數:authorSetting對象*/
/*authSetting對象屬性之一:scope.userInfo授權用戶信息*/ if (res.authSetting['scope.userInfo']) { /*scope.userInfo(是否授權用戶信息,對應接口 wx.getUserInfo)*/
wx.getUserInfo({ }) } } })
(3)獲取用戶信息
wx.getUserInfo(Object object)獲取用戶信息
參數:
object.success 回調函數的參數
// 獲取用戶信息 wx.openSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 必須是在用戶已經授權的情況下調用 wx.getUserInfo({ success: res => { // globalData函數設置全局變量,方便其他頁面調用。 this.globalData.userInfo = res.userInfo // 由於 getUserInfo 是網絡請求,可能會在 Page.onLoad 之后才返回 // 所以此處加入 callback 以防止這種情況 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) } } })
globalData函數設置全局變量,詳見下篇文章使用globalData函數設置全局變量
.