专栏首页前端资源微信小程序获取用户信息(wx.getUserInfo)

微信小程序获取用户信息(wx.getUserInfo)

微信小程序获取用户信息API:wx.getUserInfo(Object object)

包含以下属性:

属性

类型

默认值

必填

说明

withCredentials

boolean

是否带上登录态信息。当 withCredentials 为 true 时,要求此前有调用过 wx.login 且登录态尚未过期,此时返回的数据会包含 encryptedData, iv 等敏感信息;当 withCredentials 为 false 时,不要求有登录态,返回的数据不包含 encryptedData, iv 等敏感信息。

lang

string

en

显示用户信息的语言

success

function

接口调用成功的回调函数

fail

function

接口调用失败的回调函数

complete

function

接口调用结束的回调函数(调用成功、失败都会执行)

object.success 回调函数

参数

Object res

属性

类型

说明

userInfo

UserInfo

用户信息对象,不包含 openid 等敏感信息

rawData

string

不包括敏感信息的原始数据字符串,用于计算签名

signature

string

使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 用户数据的签名验证和加解密

encryptedData

string

包括敏感数据在内的完整用户信息的加密数据,详见 用户数据的签名验证和加解密

iv

string

加密算法的初始向量,详见 用户数据的签名验证和加解密

接口调整说明

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

示例代码:

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

encryptedData 解密后为以下 json 结构,详见加密数据解密算法

{
  "openId": "OPENID",
  "nickName": "NICKNAME",
  "gender": GENDER,
  "city": "CITY",
  "province": "PROVINCE",
  "country": "COUNTRY",
  "avatarUrl": "AVATARURL",
  "unionId": "UNIONID",
  "watermark": {
    "appid": "APPID",
    "timestamp": TIMESTAMP
  }
}

示例代码:

<!-- 如果只是展示用户头像昵称,可以使用 <open-data /> 组件 -->
<open-data type="userAvatarUrl"></open-data>
<open-data type="userNickName"></open-data>
<!-- 需要使用 button 来授权登录 -->
<button
  wx:if="{{canIUse}}"
  open-type="getUserInfo"
  bindgetuserinfo="bindGetUserInfo"
>
  授权登录
</button>
<view wx:else>请升级微信版本</view>
Page({
  data: {
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  },
  onLoad() {
    // 查看是否授权
    wx.getSetting({
      success(res) {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称
          wx.getUserInfo({
            success(res) {
              console.log(res.userInfo)
            }
          })
        }
      }
    })
  },
  bindGetUserInfo(e) {
    console.log(e.detail.userInfo)
  }
})

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • table表格的宽度设置,及Bootstrap表格宽度不生效的解决方法

    应为 display: table 如果是 block 会出现宽度不生效的情况。

    德顺
  • Vue webpack项目配置请求接口,修改代理,解决跨域问题

    比如接口请求不到:Uncaught (in promise) Error: Request failed with status code 404 或者 htt...

    德顺
  • table设置宽度100%不生效,把页面撑开的解决方法

    table 设置了宽度 100% ,但是页面缩小到一定程度后,table 就不再变窄,导致显示不全。

    德顺
  • 面向对象编程(设计模式)需要遵循的 6 个基本原则

    在讨论面向对象编程和模式(具体一点来说,设计模式)的时候,我们需要一些标准来对设计的好还进行判断,或者说应该遵循怎样的原则和指导方针。

    用户7657330
  • PHP 中最全的设计模式(23种)

    1. 按照目的分,目前常见的设计模式主要有23种,根据使用目标的不同可以分为以下三大类:

    botkenni
  • 三大中国科技公司被外媒严重关切 唯独百度被抛弃

    这是一篇来自国外媒体CNBC的报道,在不缺少IT巨头的华尔街很少能看到中国科技公司身影,更别谈上重视了,但是随着移动互联网的异军突起,中国公司开始屡屡占据外媒...

    人称T客
  • 微信小程序开发常见问题(二)

    知晓程序员,专注微信小程序开发的程序员! 今天再给大家分享几个微信小程序开发的常见问题,顺便吐槽一下,武汉的冬天太TM冷了,没有暖气的冬天真的很难过,写文章的心...

    连胜
  • [设计模式] 命令模式

    假定我们定义一个宏命令实现回家后的一个智能操作:包含开灯和开电视,并要求它支持撤销能力。

    架构探险之道
  • C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)

    前言 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 呃 也有半个月没更新了. ...

    GuZhenYin
  • Netty入门(Netty4.x使用指南)

    现如今,我们使用通用的应用程序或库来相互通信。例如,我们经常使用HTTP客户端库从服务器上获取信息并通过web服务执行远程过程调用。但是,通用协议或它的实现有时...

    小诸葛

扫码关注云+社区

领取腾讯云代金券