swan.getUserInfo

此 API 已被废弃,请使用 button 组件实现相关功能。

解释:获取用户信息,首次使用的用户会弹出授权提示窗,若用户同意,则会返回用户的真实数据;若用户未登录或者拒绝授权,会返回默认用户“百度网友”及默认的头像地址。使用该 API 需通过获取用户授权设置申请授权后方可对用户发起授权申请,可在 swan.authorize 中查看相关错误码信息。

方法参数

Object object

object 参数说明

属性名类型必填默认值说明
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success 返回参数说明

参数类型说明
userInfoObject用户信息对象
dataString包括敏感数据在内的完整用户信息的加密数据,加解密逻辑参考用户数据的签名验证和加解密
ivString加密算法的初始向量

userInfo 参数说明

参数类型说明
nickNameString用户昵称,用户未设置用户昵称时,将获取用户名。
avatarUrlString用户头像
genderNumber性别:值为 0 时是未知,为 1 时是男性,为 2 时是女性。

用户数据解密后字段说明

参数类型说明
nicknameString用户昵称,用户未设置用户昵称时,将获取用户名。
headimgurlString用户头像
sexString性别:值为 0 时是未知,为 1 时是男性,为 2 时是女性。
openidString用户 openid

示例

图片示例

swan.getUserInfo - 图1

代码示例 1:API 获取用户信息(授权后拿到的信息可提交到服务器保存)

在开发者工具中打开

在开发者工具中打开

在 WEB IDE 中打开

  • SWAN
  • JS
  1. <view class="wrap">
  2. <view class="card-area">
  3. <view class="display-area">
  4. <image mode="aspectFit" class="display-area-image" src="{{imageSrc}}"></image>
  5. <view class="nickname {{nameColor}}">{{nickname}}</view>
  6. </view>
  7. <view>
  8. <button bind:tap="getUserInfo" type="primary" hover-stop-propagation="true">获取用户信息</button>
  9. <button bind:tap="clearUserInfo" type="default" hover-stop-propagation="true">清空</button>
  10. </view>
  11. </view>
  12. </view>
  1. Page({
  2. data: {
  3. nickname: '百度网友',
  4. imageSrc: 'https://b.bdstatic.com/searchbox/icms/searchbox/img/avator.png',
  5. nameColor: 'default'
  6. },
  7. getUserInfo(e) {
  8. swan.getUserInfo({
  9. success: res => {
  10. // 用户在首次使用小程序时拒绝授权,可使用此api在合适的业务时机提醒用户再次授权
  11. // swan.openSetting({});
  12. console.log('getUserInfo success', res);
  13. let userInfo = res.userInfo;
  14. this.setData({
  15. nickname: userInfo.nickName,
  16. imageSrc: userInfo.avatarUrl,
  17. nameColor: 'active'
  18. });
  19. },
  20. fail: err => {
  21. // 旧方式的真机提示,与工具对齐
  22. if (err.errCode == 10005) {
  23. swan.showModal({
  24. title: '提示',
  25. content: '通过API获取用户信息将被禁用,为保证用户体验,请使用button组件的open-type获取用户信息'
  26. })
  27. }
  28. // 因为 api 封禁,err的其他错误码对应的场景不会复现,开发者请使用 button 组件实现相关功能
  29. console.log('getUserInfo err', err);
  30. }
  31. });
  32. },
  33. clearUserInfo(e) {
  34. this.setData({
  35. nickname: '百度网友',
  36. imageSrc: 'https://b.bdstatic.com/searchbox/icms/searchbox/img/avator.png',
  37. nameColor: 'default'
  38. });
  39. }
  40. });

代码示例 2:open-data 组件获取用户信息(与 API 的区别是用户不需要授权,只能在页面中展示)

在开发者工具中打开

在开发者工具中打开

在 WEB IDE 中打开

  • SWAN
  1. <view class="open-data">
  2. <view class="avatar">
  3. <open-data class="avatar-img" type="userAvatarUrl"></open-data>
  4. </view>
  5. <view class="section">
  6. <view class="sec">
  7. <view class="sec_left">昵称</view>
  8. <view class="sec_right">
  9. <open-data class="sec_left" type="userNickName"></open-data>
  10. </view>
  11. </view>
  12. <view class="sec">
  13. <view class="sec_left">性别</view>
  14. <view class="sec_right">
  15. <open-data class="sec_left" type="userGender"></open-data>
  16. </view>
  17. </view>
  18. </view>
  19. </view>

代码示例 3:button 组件获取用户信息

在开发者工具中打开

在开发者工具中打开

在 WEB IDE 中打开

  • SWAN
  • JS
  1. <view class="wrap">
  2. <button type="primary" class="middle-btn" open-type="getUserInfo" bindgetuserinfo="getUserInfo">
  3. 获取用户信息按钮
  4. </button>
  5. </view>
  1. Page({
  2. getUserInfo(e) {
  3. console.log('用户名称', e.detail.userInfo.nickName)
  4. console.log('用户头像', e.detail.userInfo.avatarUrl)
  5. console.log('用户性别', e.detail.userInfo.gender)
  6. }
  7. });