# 用户信息获取
用户信息指的是微信用户的昵称、头像、性别等个人信息。
# 首次获取
个人信息是用户的敏感信息,因此获取用户信息需要用户同意授权。授权相关说明可以参考 权限 章节。具体方法为,使用 wx.createUserInfoButton 引导用户点击后授权。
const button = wx.createUserInfoButton({
type: 'text',
text: '获取用户信息',
style: {
left: 10,
top: 76,
width: 200,
height: 40,
lineHeight: 40,
backgroundColor: '#ff0000',
color: '#ffffff',
textAlign: 'center',
fontSize: 16,
borderRadius: 4
}
})
button.onTap((res) => {
// 此处可以获取到用户信息
})
注意:
- 调用wx.authorize({scope: "scope.userInfo"})不会弹出授权窗口,必须要使用 wx.createUserInfoButton
- 调用wx.createUserInfoButton需要用户同意隐私协议,具体查阅小游戏隐私合规开发指南进行配置
# 已授权的情况下获取
如果用户已经授权过个人信息给小游戏,开发者可以把用户的个人信息记录在业务后台。但用户有可能修改昵称头像,为了保证个人信息不出现过期失效的情况,需要再次获取用户信息。此时不需要再使用 wx.createUserInfoButton 来获取用户信息,而是可以调用 wx.getUserInfo 直接获取。
wx.getUserInfo({
success(res) {
// 此处可以获取到用户信息
}
})
# 在开放数据域中获取
如果获取到的用户信息仅用于展示而不需要存储到后台,则可以通过开放数据域的接口 OpenDataContext-wx.getUserInfo
来获取。由于保证了数据无法流出,这个接口即使没有用户授权也能直接调用。
# 推荐的使用方式
先通过 wx.getSetting 判断是否已授权,如果已授权,则调用 wx.getUserInfo 获取信息,如果没有授权,则调用 wx.createUserInfoButton 创建按钮,用户主动点击后授权后获取信息
wx.getSetting({
success(res) {
if (res.authSetting['scope.userInfo'] === true) {
wx.getUserInfo({
success: (res) => {
// 已经授权,直接获取用户信息
},
});
} else {
const button = wx.createUserInfoButton({
type: "image",
style: {
left: 100,
top: 100,
width: 100,
height: 100,
backgroundColor: "rgba(255, 255, 255, 0.5)",
},
});
button.onTap((res) => {
if (res.errMsg.indexOf(':ok') > -1 && !!res.rawData) {
// 获取用户信息
}
});
}
},
});
我们提供了授权相关的代码片段,可以预览代码片段体验如何获取用户信息和使用隐私协议