swan.getUserInfo
此 API 已被废弃,请使用 button 组件实现相关功能。
解释:获取用户信息,首次使用的用户会弹出授权提示窗,若用户同意,则会返回用户的真实数据;若用户未登录或者拒绝授权,会返回默认用户“百度网友”及默认的头像地址。使用该 API 需通过获取用户授权设置申请授权后方可对用户发起授权申请,可在 swan.authorize 中查看相关错误码信息。
方法参数
Object object
object 参数说明
属性名 | 类型 | 必填 | 默认值 | 说明 |
---|
success | Function | 否 | | 接口调用成功的回调函数 |
fail | Function | 否 | | 接口调用失败的回调函数 |
complete | Function | 否 | | 接口调用结束的回调函数(调用成功、失败都会执行) |
success 返回参数说明
参数 | 类型 | 说明 |
---|
userInfo | Object | 用户信息对象 |
data | String | 包括敏感数据在内的完整用户信息的加密数据,加解密逻辑参考用户数据的签名验证和加解密 |
iv | String | 加密算法的初始向量 |
userInfo 参数说明
参数 | 类型 | 说明 |
---|
nickName | String | 用户昵称,用户未设置用户昵称时,将获取用户名。 |
avatarUrl | String | 用户头像 |
gender | Number | 性别:值为 0 时是未知,为 1 时是男性,为 2 时是女性。 |
用户数据解密后字段说明
参数 | 类型 | 说明 |
---|
nickname | String | 用户昵称,用户未设置用户昵称时,将获取用户名。 |
headimgurl | String | 用户头像 |
sex | String | 性别:值为 0 时是未知,为 1 时是男性,为 2 时是女性。 |
openid | String | 用户 openid |
示例
图片示例
代码示例 1:API 获取用户信息(授权后拿到的信息可提交到服务器保存)
在开发者工具中打开
在开发者工具中打开
在 WEB IDE 中打开
<view class="wrap">
<view class="card-area">
<view class="display-area">
<image mode="aspectFit" class="display-area-image" src="{{imageSrc}}"></image>
<view class="nickname {{nameColor}}">{{nickname}}</view>
</view>
<view>
<button bind:tap="getUserInfo" type="primary" hover-stop-propagation="true">获取用户信息</button>
<button bind:tap="clearUserInfo" type="default" hover-stop-propagation="true">清空</button>
</view>
</view>
</view>
Page({
data: {
nickname: '百度网友',
imageSrc: 'https://b.bdstatic.com/searchbox/icms/searchbox/img/avator.png',
nameColor: 'default'
},
getUserInfo(e) {
swan.getUserInfo({
success: res => {
// 用户在首次使用小程序时拒绝授权,可使用此api在合适的业务时机提醒用户再次授权
// swan.openSetting({});
console.log('getUserInfo success', res);
let userInfo = res.userInfo;
this.setData({
nickname: userInfo.nickName,
imageSrc: userInfo.avatarUrl,
nameColor: 'active'
});
},
fail: err => {
// 旧方式的真机提示,与工具对齐
if (err.errCode == 10005) {
swan.showModal({
title: '提示',
content: '通过API获取用户信息将被禁用,为保证用户体验,请使用button组件的open-type获取用户信息'
})
}
// 因为 api 封禁,err的其他错误码对应的场景不会复现,开发者请使用 button 组件实现相关功能
console.log('getUserInfo err', err);
}
});
},
clearUserInfo(e) {
this.setData({
nickname: '百度网友',
imageSrc: 'https://b.bdstatic.com/searchbox/icms/searchbox/img/avator.png',
nameColor: 'default'
});
}
});
代码示例 2:open-data 组件获取用户信息(与 API 的区别是用户不需要授权,只能在页面中展示)
在开发者工具中打开
在开发者工具中打开
在 WEB IDE 中打开
<view class="open-data">
<view class="avatar">
<open-data class="avatar-img" type="userAvatarUrl"></open-data>
</view>
<view class="section">
<view class="sec">
<view class="sec_left">昵称</view>
<view class="sec_right">
<open-data class="sec_left" type="userNickName"></open-data>
</view>
</view>
<view class="sec">
<view class="sec_left">性别</view>
<view class="sec_right">
<open-data class="sec_left" type="userGender"></open-data>
</view>
</view>
</view>
</view>
代码示例 3:button 组件获取用户信息
在开发者工具中打开
在开发者工具中打开
在 WEB IDE 中打开
<view class="wrap">
<button type="primary" class="middle-btn" open-type="getUserInfo" bindgetuserinfo="getUserInfo">
获取用户信息按钮
</button>
</view>
Page({
getUserInfo(e) {
console.log('用户名称', e.detail.userInfo.nickName)
console.log('用户头像', e.detail.userInfo.avatarUrl)
console.log('用户性别', e.detail.userInfo.gender)
}
});