微信小程序学习之路——API用户信息

用户信息

wx.getUserInfo(Object)

获取用户信息,需要首先调用wx.login接口,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 回调函数

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

示例代码如下:

wx.getUserInfo({
  success:function(res){
    const userInfo = res.userInfo
    const nickName = res.nickName
    const avatarUrl = res.avatarUrl
    const gender = userInfo.gender
    const province = userInfo.province
    const city = userInfo.city
    const country = userInfo.country
  }
})

对encrypteData解密后可以得到完整的用户信息,解密算法解压后的json结构如下:

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

其中unionId用于区分不同应用下的用户身份,它在同一微信开放平台账号下的移动应用、网站应用和公共账号(包括小程序)是全局唯一的,而openId只在同一应用体系中是唯一的,即在不同公众号下的openId可能重复,但unionId不会重复。即同一用户,对于应该微信开放平台下的不同应用,登陆后unionId是相同的,openId是不同的。获取unionId首先需要将小程序介入微信开放平台,开发者可以登陆威胁你开放平台进行开发者资质认证。

本例获取用户信息实例代码演示如下:

<!--如果只是展示用户头像昵称,可以使用<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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值