swan.getUserInfo

此 API 日后将被废弃,建议使用 button 组件实现相关功能。

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

方法参数

Object object

object参数说明

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

success返回参数说明

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

userInfo参数说明

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

用户数据解密后字段说明

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

示例

扫码体验

swan.getUserInfo - 图4请使用百度APP扫码

图片示例

swan.getUserInfo - 图5

swan.getUserInfo - 图6

swan.getUserInfo - 图7

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

在开发者工具中预览效果

  • 在 swan 文件中
  1. <view class="container">
  2. <view class="user-content">
  3. <view class="user-info">
  4. <image class="avator" src="{{imageSrc}}"></image>
  5. <view class="nickname {{nameColor}}">{{nickname}}</view>
  6. </view>
  7. <view class="button-content">
  8. <button bind:tap="getUserInfo" class="get-info" type="primary" hover-stop-propagation="true">获取用户信息</button>
  9. <button bind:tap="clearUserInfo" class="clear-info" type="default" hover-stop-propagation="true">清空</button>
  10. </view>
  11. </view>
  12. </view>
  • 在 js 文件中
Page({
    data: {
        nickname: '百度网友',
        imageSrc: '../images/avator.png',
        nameColor: 'default'
    },
    getUserInfo(e) {
        swan.getUserInfo({
            success: res => {
                // 用户在首次使用小程序时拒绝授权,可使用此api在合适的业务时机提醒用户再次授权
                // swan.openSetting({});
                let userInfo = res.userInfo;
                this.setData({
                    nickname: userInfo.nickName,
                    imageSrc: userInfo.avatarUrl,
                    nameColor: 'active'
                });
            },
            fail: err => {
                console.log(err);
                swan.showToast({
                    title: '请先授权'
                });
            }
        });
    },
    clearUserInfo(e) {
        this.setData({
            nickname: '百度网友',
            imageSrc: '../images/avator.png',
            nameColor: 'default'
        });
    }
});

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

在开发者工具中预览效果

  • 在 swan 文件中
<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组件获取用户信息 :

在开发者工具中预览效果

  • 在 swan 文件中
<view class="wrap">
    <button type="primary" class="middle-btn" open-type="getUserInfo" bindgetuserinfo="getUserInfo">获取用户信息按钮</button>
</view>
  • 在 js 文件中
Page({
    getUserInfo(e) {
        console.log(e.detail.userInfo.nickName)
        console.log(e.detail.userInfo.avatarUrl)
        console.log(e.detail.userInfo.gender)
    }
});