程序最新wx.getUserProfile接⼝获取⽤户信息和登陆信息的⽅法,迭代
黑暗的舞者wx。。。
最近,⼩程序发布了新的版本,是关于⽤户信息的问题,
2021年4⽉13⽇后发布的⼩程序新版本,⽆法通过wx.getUserInfo与获取⽤户个⼈信息(头像、昵称、性别与地区),
将直接获取匿名数据(包括userInfo与encryptedData中的⽤户个⼈信息),
获取加密后的openID与unionID数据的能⼒不做调整。此前发布的⼩程序版本不受影响,但如果要进⾏版本更新则需要进⾏适配。
这就需要我们之前的代码进⾏升级适配。
更新⽅法: 在WXML内,使⽤bindtap="getUserProfile"这个⽅法,
官⽅api直接给到了我们调⽤接⼝的⽅法,如下:
<script>
Page({白马禅寺
data:{
userInfo:{},
hasUserInfo:false,
canIUseGetUserProfile:false,樱花树下
},
onLoad(){
UserProfile){
this.setData({
canIUseGetUserProfile:true
})
}
},
getUserProfile(e){
// 推荐使⽤wx.getUserProfile获取⽤户信息,开发者每次通过该接⼝获取⽤户个⼈信息均需⽤户确认
// 开发者妥善保管⽤户快速填写的头像昵称,避免重复弹窗
desc:'⽤于完善会员资料',// 声明获取⽤户个⼈信息后的⽤途,后续会展⽰在弹窗中,请谨慎填写
success:(res)=>{
世界上最大的沙漠是什么沙漠this.setData({
userInfo: res.userInfo,
hasUserInfo:true
})
}
})
},
getUserInfo(e){
// 不推荐使⽤getUserInfo获取⽤户信息,预计⾃2021年4⽉13⽇起,getUserInfo将不再弹出弹窗,并直接返回匿名的⽤户个⼈信息
蚌埠美食
this.setData({
userInfo: e.detail.userInfo,
hasUserInfo:true
})
},
})
</script>
但是我们在实际应⽤的时候,⼀般是调⽤完的登陆接⼝之后,再进⾏获取⽤户的信息。
对⽐之前获取的⽅式,之前我们需要获取敏感信息的话,需要获取 Vi 和 encryptedData的值,来
传送给后端,再进⾏返回,获取⽤户的openId和unionId。
注意!注意!注意!注意!
新的api⽅法已经不需要上述的操作的,
调⽤的登陆接⼝之后,获取de之后,使⽤app.postAjax直接可以给到后端来换取openId和unionId。
调⽤接⼝获取登录凭证(code)。通过凭证进⽽换取⽤户登录态信息,包括⽤户在当前⼩程序的唯⼀标识(openid)、开放平台帐号下的唯⼀标识(unionid,若当前⼩程序已绑定到开放平台帐号)及本次登录的会话密钥(session_key)等。⽤户数据的加解密通讯需要依赖会话密钥完成。
另外,我这⾥尝试了新的getUserProfile的⽅法,发现,wx.login可以在wx.getUserProfile调⽤,但是wx.getUserProfile⽆法在
wx.login内调⽤;
如下所⽰:
<script>
success:(res)=>{
that.setData({
userName: res.userInfo.nickName,// ⽤户昵称
userGender: der,// ⽤户性别
})
wx.login({
success: res =>{
let code = de //这⾥获取的就是登陆的code,可以传送给后端来换取openid和unionid
let data ={}//请求数据
let methods ="GET"// 请求⽅式
app.postAjax(""+ code, data, methods).then( res=>{// 具体的换取⽅法请参考官⽅⽂档以下路径//  developers.weixin.qq/miniprogram/dev/api-backend/open-api/de2Session.html                        console.log(res)//获取后端传来的值。
})
}
})
}
})
</script>广汽招聘
以上就是对于2021年4⽉13⽇后发布的⼩程序新版本,如何获取⽤户信息的⽅法。