uni-app 微信要改getUserInfo接口了,是否会同步修改

uni-app 微信要改getUserInfo接口了,是否会同步修改

操作步骤:

2021年4月13日后发布新版本的小程序,无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。 新增getUserProfile接口(基础库2.10.4版本开始支持),可获取用户头像、昵称、性别及地区信息,开发者每次通过该接口获取用户个人信息均需用户确认。具体接口文档:《getUserProfile接口文档》

预期结果:

2021年4月13日后发布新版本的小程序,无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。 新增getUserProfile接口(基础库2.10.4版本开始支持),可获取用户头像、昵称、性别及地区信息,开发者每次通过该接口获取用户个人信息均需用户确认。具体接口文档:《getUserProfile接口文档》

实际结果:

2021年4月13日后发布新版本的小程序,无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。 新增getUserProfile接口(基础库2.10.4版本开始支持),可获取用户头像、昵称、性别及地区信息,开发者每次通过该接口获取用户个人信息均需用户确认。具体接口文档:《getUserProfile接口文档》

bug描述:

2021年4月13日后发布新版本的小程序,无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。 新增getUserProfile接口(基础库2.10.4版本开始支持),可获取用户头像、昵称、性别及地区信息,开发者每次通过该接口获取用户个人信息均需用户确认。具体接口文档:《getUserProfile接口文档》

信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本号 10
HBuilderX类型 正式
HBuilderX版本号 3.1.3
手机系统 Android
手机系统版本号 Android 11
手机厂商 华为
手机机型 p20
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

更多关于uni-app 微信要改getUserInfo接口了,是否会同步修改的实战教程也可以访问 https://www.itying.com/category-93-b0.html

28 回复

?有思路了吗

更多关于uni-app 微信要改getUserInfo接口了,是否会同步修改的实战教程也可以访问 https://www.itying.com/category-93-b0.html


同问

没事我也问问,是官方直接改uni.getUserInfo 接口进行兼容呢还是再同步开新接口呢?

解决了。1.05的开发工具表面上调试行,发行模式不行。但代码传上去了在真机上也行。就直接用的uni.getUserProfile() 命令。

请教一下是怎么解决的,我已经更新了但还是提示not a function

回复 8***@qq.com: 直接上传就行了,直接手机测试测试版就行

回复 金满斗: 正式版的可以吗

总是提示这个 “getUserProfile:fail can only be invoked by user TAP gesture.”,请问你们怎么解决的呢

避坑:小程序基础库 2.14.0

同问,官方改接口吗?

同问,官方这边有什么解决的方案可以提供一下吗

官方最初发表的公告说 4月13号后才会弃用,但提前了那么久。。。

首先你的按钮只能是普通的按钮,去掉getuserinfo的声明,使用@click

微信开发者工具: 1.05.2103190

uniapp: 3.1.7.20210330

完成以上: 直接使用 uni.getUserProfile()

昨天还ok的,今天下午忽然就遇到这个问题了,一搜微信官方开发文档,果然~
微信开发者工具:1.05.2102010 HBX版本:2.9.3 [sm]:634 uni_getUserInfo fail: {errMsg: “getUserProfile:fail can only be invoked by user TAP gesture.”}
把HBX改成最新版本,直接替换方法名不行,还得改不少其他东西,获取昵称、头像,都要授权
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html

<block v-if="canIUseProfile==false" > <button v-if="isLogin === false" type="primary" open-type="getUserInfo" @getuserinfo="GetUserInfo" withCredentials="true">获取授权并登录1</button> </block> <block v-else> <button v-if="isLogin === false" type="primary" @tap="GetUserInfo" >获取授权并登录2</button> </block>

data 里加一个canIUseProfile初始为false


onLoad 里加一段判断
if( wx.getUserProfile ){
console.log(’–check getUserProfile–OK’);
this.canIUseProfile = true;
}


methods 里新老都用同一个方法来处理:

GetUserInfo : function(e){

//旧版本方式  
if( this.canIUseProfile == false ){  

    //获取授权信息  
    if(e.detail.userInfo){  

        console.log('用户允许了授权')  
        console.log( e.detail.userInfo );   //1.拿到基本的微信信息!!  

        //继续过去的老方法代码,略……  

    }  

//新版本方式  
}else{  

    var that = this;  
    wx.getUserProfile({  
        desc : '用于完善用户资料',  
        lang : 'zh_CN',  
        success : function( res ){  

            console.log( 'wx.getUserProfile=>用户允许了授权' );  
            console.log( res.userInfo );  
            // console.log( res.rawData );  
            console.log( res.signature );  
            console.log( res.encryptedData );  
            console.log( res.iv );  
            // console.log( res.cloudID );  

            /* 以下是网友说的,我还没来得及测试:  
            按新方案的意思,encryptedData,iv,rawData,signature这几个属性用不上了。  
            小程序端wx.getUserProfile()获取到userInfo,wx.login()获取到code,  
            这两个传给后端,code通过code2session接口获取到unionid,openid,session_key等;  
            原有的拿session_key解密encryptedData的逻辑不需要了,毕竟encryptedData也只是比userInfo多了openid和unionid。  
            */  

        }  
        fail : function( res ){  
            console.log('wx.getUserProfile=>用户拒绝了授权');  
            console.log( res );  

        },  
    });  

}  

}

解密看来是真的不需要了,2.16才有encryptedData、signature这几个属性,但是解密之后并没有什么有用的信息,

但是code2session还是有用的,才可以得到OpenId

2.16.0即可

APP登陆授权有影响吗?

// 注意不能再 open-type=“getUserInfo”
<text @click=“getUserInfo”>请登录</text>

<script> getUserInfo(){ console.log("aaaa") uni.getUserProfile({ desc:'Wexin', // 这个参数是必须的 success:res=>{ console.log(res) }, fail:err=>{ console.log(err) } }) } </script>

总是提示这个 “getUserProfile:fail can only be invoked by user TAP gesture.”,请问你们怎么解决的呢

也就是要把这个方法放到一个button里面

回复 loveCoding: 嗯嗯。放uni.showModal也行

不能写到一个回调方法里面,不然会报错getUserProfile:fail can only be invoked by user TAP gesture 淦

回到顶部