微信小程序最新wx.getUserProfile接口获取用户信息和登陆信息的方法,迭代wx.getUserInfo方法。

2021年4月13日后,微信小程序更新了用户信息获取方式,不再通过wx.getUserInfo,而是使用wx.getUserProfile接口,用户需在弹窗中确认授权。wx.login获取的code可直接用于后端换取openID和unionID。新接口简化了敏感信息处理,wx.login可在wx.getUserProfile内部调用,反之则不行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,微信小程序发布了新的版本,是关于用户信息的问题,
2021年4月13日后发布的小程序新版本,无法通过wx.getUserInfo与获取用户个人信息(头像、昵称、性别与地区),
将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),
获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。
这就需要我们之前的代码进行升级适配。
小程序登录、用户信息相关接口调整说明
更新方法: 在WXML内,使用bindtap="getUserProfile"这个方法,
官方api直接给到了我们调用接口的方法,如下:
《getUserProfile接口文档》

<script>
    Page({
        data: {
            userInfo: {},
            hasUserInfo: false,
            canIUseGetUserProfile: false,
        },
        onLoad() {
            if (wx.getUserProfile) {
            this.setData({
                canIUseGetUserProfile: true
            })
            }
        },
        getUserProfile(e) {
            // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认
            // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
            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方法已经不需要上述的操作的,
调用微信的登陆接口之后,获取res.code之后,使用app.postAjax直接可以给到后端来换取openId和unionId。
wx.login接口文档

调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台帐号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。

另外,我这里尝试了新的getUserProfile的方法,发现,wx.login可以在wx.getUserProfile调用,但是wx.getUserProfile无法在wx.login内调用;
如下所示:

<script>
     wx.getUserProfile({
        success: (res) => {
            that.setData({
                userName: res.userInfo.nickName,   // 用户昵称
                userGender: res.userInfo.gender,   // 用户性别
            })
            wx.login({
                success: res =>{
                    let code = res.code //这里获取的就是登陆的code,可以传送给后端来换取openid和unionid

                    let data = {}  //请求数据

                    let methods = "GET"// 请求方式


                    app.postAjax(""+ code, data, methods).then( res=> {   // 具体的换取方法请参考微信官方文档以下路径
                        //   https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html

                        console.log(res)   //获取后端传来的值。
                    })


                }
            })
        }
     })
</script>

以上就是对于2021年4月13日后发布的小程序新版本,如何获取用户信息的方法。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值