在微信小程序开发中,经常需要获得用户的信息,如用户昵称、性别、地区等信息
获取用户信息的流程是
首先使用wx.getSetting
查询用户当前的设置,是否获得用户授权,如果获得用户授权,再调用wx.getUserInfo
获得用户信息
wx.getSetting
会返回一个Object,包含用户授权结果,代码如下所示。
wx.getSetting({
success(res) {
console.log(res.authSetting)
// res.authSetting = {
// "scope.userInfo": true,
// "scope.userLocation": true
// }
}
})
可以看到,wx.getSetting
的success回调中得到了一个用户设置的对象,在这个对象中,res.authSetting
就是用户的授权结果
例如,想要知道是否已取得获取用户信息的授权,那么就是res.authSetting['scope.userInfo']
,如果值为true,就是取得了获取用户信息的授权,如示例4-4所示。
index.wxml
--------------
<view>
<button
wx:if="{{canIUse}}"
open-type="getUserInfo"
bindgetuserinfo="bindGetUserInfo"
>
授权登录
</button>
</view>
================================================================
index.js
---------------------
Page({
data: {
canIUse: wx.canIUse('button.open-type.getUserInfo')
},
onLoad() {
// 查看是否授权
wx.getSetting({
success(res) {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称
wx.getUserInfo({
success(res) {
console.log(res.userInfo)
}
})
}
}
})
},
bindGetUserInfo(e) {
console.log(e.detail.userInfo)
}
})
示例4-4中,在onLoad生命周期函数里,首先通过wx.getSetting
获取用户的设置,然后根据res.authSetting['scope.userInfo']
判断是否获得了用户的授权,如果取得了授权,则使用wx.getUserInfo
获取用户的信息