title: Taro.getUserInfo(option)

sidebar_label: getUserInfo

获取用户信息。

接口调整说明 在用户未授权过的情况下调用此接口,将不再出现授权弹窗,会直接进入 fail 回调(详见《公告》)。在用户已授权的情况下调用此接口,可成功获取用户信息。

参考文档

类型

  1. (option?: Option) => Promise<SuccessCallbackResult>

参数

Option

参数 类型 必填 说明
complete (res: CallbackResult) => void 接口调用结束的回调函数(调用成功、失败都会执行)
fail (res: CallbackResult) => void 接口调用失败的回调函数
lang "en" | "zh_CN" | "zh_TW" 显示用户信息的语言
success (result: SuccessCallbackResult) => void 接口调用成功的回调函数
withCredentials boolean 是否带上登录态信息。当 withCredentials 为 true 时,要求此前有调用过 Taro.login 且登录态尚未过期,此时返回的数据会包含 encryptedData, iv 等敏感信息;当 withCredentials 为 false 时,不要求有登录态,返回的数据不包含 encryptedData, iv 等敏感信息。

SuccessCallbackResult

参数 类型 说明
cloudID string 敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据,详细见云调用直接获取开放数据
encryptedData string 包括敏感数据在内的完整用户信息的加密数据,详见 用户数据的签名验证和加解密
iv string 加密算法的初始向量,详见 用户数据的签名验证和加解密
rawData string 不包括敏感信息的原始数据字符串,用于计算签名
signature string 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 用户数据的签名验证和加解密
userInfo UserInfo 用户信息对象,不包含 openid 等敏感信息
errMsg string 调用结果

示例代码

  1. // 必须是在用户已经授权的情况下调用
  2. Taro.getUserInfo({
  3. success: function(res) {
  4. var userInfo = res.userInfo
  5. var nickName = userInfo.nickName
  6. var avatarUrl = userInfo.avatarUrl
  7. var gender = userInfo.gender //性别 0:未知、1:男、2:女
  8. var province = userInfo.province
  9. var city = userInfo.city
  10. var country = userInfo.country
  11. }
  12. })

敏感数据有两种获取方式,一是使用 加密数据解密算法 。 获取得到的开放数据为以下 json 结构:

  1. {
  2. "openId": "OPENID",
  3. "nickName": "NICKNAME",
  4. "gender": GENDER,
  5. "city": "CITY",
  6. "province": "PROVINCE",
  7. "country": "COUNTRY",
  8. "avatarUrl": "AVATARURL",
  9. "unionId": "UNIONID",
  10. "watermark": {
  11. "appid":"APPID",
  12. "timestamp": TIMESTAMP
  13. }
  14. }

API 支持度

API 微信小程序 H5 React Native
Taro.getUserInfo ✔️