获取用户信息,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
}
}
tip
:wx.getuserinfo
接口需要用户授权,请兼容用户拒绝授权的场景。如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
同一个微信开放平台下的相同主体的app、公众号、小程序,如果用户已经关注公众号,或者曾经登录过app或公众号,则用户打开小程序时,开发者可以直接通过wx.login获取到该用户unionid,无须用户再次授权。
微信开放平台绑定小程序流程
前提:微信开放平台帐号必须已完成开发者资质认证
开发者资质认证流程:
登录微信开放平台(open.weixin.qq.com) – 帐号中心 – 开发者资质认证
绑定流程:
登录微信开放平台(open.weixin.qq.com)—管理中心—公众帐号—绑定公众帐号