一個很常用的功能,但是我還是發(fā)現(xiàn)有一些需要注意的地方在里面,簡單記錄一下。
獲取用戶基本信息
第一個問題就是這個 button 組件需要添加 open-type 屬性,并指定為 getUserInfo 類型,來獲取用戶基本信息。還有另外一種做法,具體可以參考 官方文檔的說明。
<button bindgetuserinfo="getUserName" (綁定的函數(shù))
open-type="getUserInfo">點擊登錄</button>
放一個動圖哈哈哈

js 部分就是響應(yīng)點擊事件,使用 api wx.getUserInfo(Object object)
獲取用戶信息,注意傳遞給 wx.getUserInfo 的是一個字典其中包含了兩個函數(shù)分別作為成功和失敗的回調(diào)函數(shù)(callback function)
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
name: "請先登錄"
},
/**
* 獲取用戶信息
*/
getUserName: function () {
wx.openSetting({})
var that = this;
// 調(diào)用微信的接口獲取當(dāng)前用戶的信息(傳遞的參數(shù)是字典)
wx.getUserInfo({
// 調(diào)用成功后觸發(fā)(回調(diào)函數(shù))
success: function(res) {
console.log("成功:", res.userInfo.nickName);
// 修改頁面和后臺數(shù)據(jù)
that.setData({name: res.userInfo.nickName});
},
// 調(diào)用失敗后觸發(fā)
fall: function (res) {
console.log("失敗:", res);
}
});
}
})
注意 this 的指代對象發(fā)生了變化,最開始的this是指代 Page() 構(gòu)造出來的對象,在函數(shù)里面使用 this 會說未指定,所以我們使用了 that 承接一下,這也算傳統(tǒng)藝能咯。
另外一點:獲取用戶信息時會自動彈出一個對話框問用戶是否提供信息,這個彈窗只彈出一次,如果用戶點擊了拒絕后來又想改為允許,可以使用 wx.openSetting({})
除了可以獲取用戶的昵稱之外還有很多信息可以得到,還有一個比較常用的就是用戶頭像了也就是 res.userInfoavatarUrl。
獲取用戶地理位置信息
<!-- 獲取地理位置信息 -->
<view bindtap="getLocalpath">{{localpath}}</view>
// pages/bind/bind.js
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
localpath: "點擊獲取位置信息"
},
/**
* 獲取用戶地理位置信息
*/
getLocalpath: function () {
var that = this;
wx.chooseLocation({
success: function (res) {
// console.log(res);
that.setData({localpath: res.name});
}
});
}
})