2021.04.06
最近在开发小程序,今天突然发现不能登录了,排查了一会发现:
wx.getSetting的返回值中并没有返回
"scope.userInfo": true
这样就拿不到用户返回的信息了并且也没看到用户授权弹窗;正常是使用getSetting弹出用户信息授权,然后就可以通过getUserInfo的接口获取加密的用户信息
然后去查了文档:
发现:因为现在getUserInfo可能是需要匿名,而getSetting的userInfo授权对应的又是getSetting所以就造成了登录失败,因为拿不到true的返回值
所以现在必须使用getUSerProfile才能获取用户信息,而且只要在页面上写上点击事件就可以触发,你也可以在方法中直接调用,会直接弹出微信的授权窗口:
<button bindtap="test"> 获取头像昵称 </button>
test() {
// 获取用户信息
wx.getUserProfile({
lang:'zh_CN',
desc: '用于获取用户信息',
success:(res)=>{
console.log('-------------')
console.log(res)
console.log('-------------')
},
fail: (res)=>{
console.log(res)
}
})
}
wx.getUserProfile(Object object) - 2021.04.07(只是当前的,之后修改的话待定)
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
lang | string | en | 否 | 显示用户信息的语言 |
desc | string | 是 | 声明获取用户个人信息后的用途,不超过30个字符 | |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
object.lang 的合法值
值 | 说明 | 最低版本 |
---|---|---|
en | 英文 | |
zh_CN | 简体中文 | |
zh_TW | 繁体中文 |
object.success 回调函数
参数
Object res
属性 | 类型 | 说明 | 最低版本 |
---|---|---|---|
userInfo | UserInfo | 用户信息对象 | 2.10.4 |
rawData | string | 不包括敏感信息的原始数据字符串,用于计算签名 | 2.16.0 |
signature | string | 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 用户数据的签名验证和加解密 | 2.16.0 |
encryptedData | string | 包括敏感数据在内的完整用户信息的加密数据,详见 用户数据的签名验证和加解密 | 2.16.0 |
iv | string | 加密算法的初始向量,详见 用户数据的签名验证和加解密 | 2.16.0 |
cloudID | string | 敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据,详细见云调用直接获取开放数据 | 2.16.0 |