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

最近,微信小程序发布了新的版本,是关于用户信息的问题,
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日后发布的小程序新版本,如何获取用户信息的方法。

你可能感兴趣的:(工作分享,小程序,javascript,前端)