阅读(4000) (0)

微信小程序API 用户信息 wx.getUserInfo(OBJECT)

2016-09-26 11:32:22 更新

wx.getUserInfo(OBJECT)

​获取用户信息,withCredentials 为 true 时需要先调用wx.login接口

OBJECT参数说明:

参数名 类型 必填 说明 最低版本
withCredentials Boolean 是否带上登录态信息 1.1.0
lang String 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文 1.4.0
success Function 接口调用成功的回调函数  
fail Function 接口调用失败的回调函数  
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)  

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

success返回参数说明:
参数 类型 说明
userInfo OBJECT 用户信息对象,不包含 openid 等敏感信息
rawData String 不包括敏感信息的原始数据字符串,用于计算签名。
signature String 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,参考文档signature
encryptedData String 包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法
iv String 加密算法的初始向量,详细见加密数据解密算法

示例代码:

wx.getUserInfo({
  success: function(res) {
    var userInfo = res.userInfo
    var nickName = userInfo.nickName
    var avatarUrl = userInfo.avatarUrl
    var gender = userInfo.gender //性别 0:未知、1:男、2:女 
    var province = userInfo.province
    var city = userInfo.city
    var 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
    }
}

Bug & Tip

  1. tip:wx.getUserInfo接口需要用户授权,请兼容用户拒绝授权的场景。

UnionID机制说明:

如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。

同一个微信开放平台下的相同主体的App、公众号、小程序,如果用户已经关注公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。

微信开放平台绑定小程序流程

前提:微信开放平台帐号必须已完成开发者资质认证

开发者资质认证流程:

登录微信开放平台(open.weixin.qq.com) – 帐号中心 – 开发者资质认证

绑定流程:

登录微信开放平台(open.weixin.qq.com)—管理中心—公众帐号—绑定公众帐号