一个很常用的功能,但是我还是发现有一些需要注意的地方在里面,简单记录一下。
获取用户基本信息
第一个问题就是这个 button 组件需要添加 open-type 属性,并指定为 getUserInfo 类型,来获取用户基本信息。还有另外一种做法,具体可以参考 官方文档的说明。
<button bindgetuserinfo="getUserName" (绑定的函数)
open-type="getUserInfo">点击登录</button>
放一个动图哈哈哈
js 部分就是响应点击事件,使用 api wx.getUserInfo(Object object)
获取用户信息,注意传递给 wx.getUserInfo
的是一个字典其中包含了两个函数分别作为成功和失败的回调函数(callback function)
Page({
/**
* 页面的初始数据
*/
data: {
name: "请先登录"
},
/**
* 获取用户信息
*/
getUserName: function () {
wx.openSetting({})
var that = this;
// 调用微信的接口获取当前用户的信息(传递的参数是字典)
wx.getUserInfo({
// 调用成功后触发(回调函数)
success: function(res) {
console.log("成功:", res.userInfo.nickName);
// 修改页面和后台数据
that.setData({name: res.userInfo.nickName});
},
// 调用失败后触发
fall: function (res) {
console.log("失败:", res);
}
});
}
})
注意 this 的指代对象发生了变化,最开始的this是指代 Page() 构造出来的对象,在函数里面使用 this 会说未指定,所以我们使用了 that 承接一下,这也算传统艺能咯。
另外一点:获取用户信息时会自动弹出一个对话框问用户是否提供信息,这个弹窗只弹出一次,如果用户点击了拒绝后来又想改为允许,可以使用 wx.openSetting({})
除了可以获取用户的昵称之外还有很多信息可以得到,还有一个比较常用的就是用户头像了也就是 res.userInfoavatarUrl
。
获取用户地理位置信息
<!-- 获取地理位置信息 -->
<view bindtap="getLocalpath">{{localpath}}</view>
// pages/bind/bind.js
Page({
/**
* 页面的初始数据
*/
data: {
localpath: "点击获取位置信息"
},
/**
* 获取用户地理位置信息
*/
getLocalpath: function () {
var that = this;
wx.chooseLocation({
success: function (res) {
// console.log(res);
that.setData({localpath: res.name});
}
});
}
})