wx.getUserInfo(Object object)

本接口从基础库版本 2.3.1 起支持在小程序插件中使用

调用前需要 用户授权 scope.userInfo。

获取用户信息。

在小程序插件中使用时,需要在用户信息功能页中获得用户授权之后调用。否则将返回 fail。详见 用户信息功能页

参数

Object object

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

object.lang 的合法值

说明最低版本
en英文
zh_CN简体中文
zh_TW繁体中文

object.success 回调函数

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

接口调整说明

为优化用户登录体验,该接口将进行调整,详见 用户信息接口调整说明

示例代码

  1. // 必须是在用户已经授权的情况下调用
  2. wx.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. }

小程序用户信息组件示例代码

  1. <!-- 如果只是展示用户头像昵称,可以使用 <open-data /> 组件 -->
  2. <open-data type="userAvatarUrl"></open-data>
  3. <open-data type="userNickName"></open-data>
  4. <!-- 需要使用 button 来授权登录 -->
  5. <button wx:if="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button>
  6. <view wx:else>请升级微信版本</view>
  1. Page({
  2. data: {
  3. canIUse: wx.canIUse('button.open-type.getUserInfo')
  4. },
  5. onLoad: function() {
  6. // 查看是否授权
  7. wx.getSetting({
  8. success (res){
  9. if (res.authSetting['scope.userInfo']) {
  10. // 已经授权,可以直接调用 getUserInfo 获取头像昵称
  11. wx.getUserInfo({
  12. success: function(res) {
  13. console.log(res.userInfo)
  14. }
  15. })
  16. }
  17. }
  18. })
  19. },
  20. bindGetUserInfo (e) {
  21. console.log(e.detail.userInfo)
  22. }
  23. })