# tap.getUserInfo(Object object)

以 Promise 风格调用:不支持

用户授权:需要 scope.userInfo。

# 功能描述

获取用户信息。详情参考 用户信息获取。

# 参数

# Object object

属性类型默认值必填说明
withCredentialsboolean是否带上登录态信息。当 withCredentials 为 true 时,要求此前有调用过 tap.login 且登录态尚未过期,此时返回的数据会包含 encryptedData, iv 等敏感信息;当 withCredentials 为 false 时,不要求有登录态,返回的数据不包含 encryptedData, iv 等敏感信息。
langstringen显示用户信息的语言
合法值说明
en英文
zh_CN简体中文
zh_TW繁体中文
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

# object.success 回调函数

# 参数
# Object res
属性类型说明
userInfoUserInfo用户信息对象,不包含 openid 等敏感信息
rawDatastring不包括敏感信息的原始数据字符串,用于计算签名
signaturestring使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 用户数据的签名验证和加解密
encryptedDatastring包括敏感数据在内的完整用户信息的加密数据,详见 用户数据的签名验证和加解密
ivstring加密算法的初始向量,详见 用户数据的签名验证和加解密
cloudIDstring敏感数据对应的云 ID,开通云开发的小游戏才会返回,可通过云调用直接获取开放数据,详细见云调用直接获取开放数据

# 示例代码

// 必须是在用户已经授权的情况下调用
tap.getUserInfo({
  success: function(res) {
    var userInfo = res.userInfo
    var nickName = userInfo.nickName
    var avatarUrl = userInfo.avatarUrl
    var gender = userInfo.gender //性别 0:未知、1:男、2:女
    var province = userInfo.province
    var city = userInfo.city
    var country = userInfo.country
  }
})

# 最佳用法

// 通过 tap.getSetting 查询用户是否已授权头像昵称信息
tap.getSetting({
  success (res){
    if (res.authSetting['scope.userInfo']) {
      // 已经授权,可以直接调用 getUserInfo 获取头像昵称
      tap.getUserInfo({
        success: function(res) {
          console.log(res.userInfo)
        }
      })
    } else {
      // 否则,先通过 tap.createUserInfoButton 接口发起授权
      let button = tap.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) => {
        // 用户同意授权后回调,通过回调可获取用户头像昵称信息
        console.log(res)
      })
    }
  }
})