wx.getUserInfo(Object object)

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

获取用户信息。

参数

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

object.lang 的合法值

说明
en 英文
zh_CN 简体中文
zh_TW 繁体中文
object.success 回调函数

参数

Object res

属性 类型 说明 支持版本
userInfo UserInfo 用户信息对象,不包含 openid 等敏感信息
rawData string 不包括敏感信息的原始数据字符串,用于计算签名
signature string 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 用户数据的签名验证和加解密
encryptedData string 包括敏感数据在内的完整用户信息的加密数据,详见 用户数据的签名验证和加解密
iv string 加密算法的初始向量,详见 用户数据的签名验证和加解密

示例代码

  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. })

encryptedData 解密后为以下 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. }

接口调整说明

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

示例代码

  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. })

原文: https://developers.weixin.qq.com/minigame/dev/api/open-api/user-info/wx.getUserInfo.html