音乐啤酒
音乐啤酒
  • 发布:2021-03-02 16:21
  • 更新:2021-04-28 21:31
  • 阅读:5874

【报Bug】微信要改getUserInfo接口了,uniapp同步改吗

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

HBuilderX类型: 正式

HBuilderX版本号: 3.1.3

手机系统: Android

手机系统版本号: Android 11

手机厂商: 华为

手机机型: p20

页面类型: vue

nvue编译模式: fast

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

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

预期结果:

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

实际结果:

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

bug描述:

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

2021-03-02 16:21 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com - .。。。。。。。。。。。。。。。。

?有思路了吗

atubo

atubo

同问

8***@qq.com

8***@qq.com

同问

1***@qq.com

1***@qq.com

同问

金满斗

金满斗 - 聚宝盆记账易,真的好用

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

金满斗

金满斗 - 聚宝盆记账易,真的好用

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

  • 8***@qq.com

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

    2021-03-08 11:19

  • 金满斗

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

    2021-03-08 12:07

  • 1***@qq.com

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

    2021-03-16 15:00

  • 小小小农民

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

    2021-04-13 17:54

1***@qq.com

1***@qq.com

避坑:小程序基础库 2.14.0

q***@gmail.com

q***@gmail.com

同问,官方改接口吗?

2***@qq.com

2***@qq.com

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

  • hbw

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


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


    具体 参考博客 https://blog.csdn.net/wakaka112233/article/details/115423836

    2021-04-04 02:12

7***@qq.com

7***@qq.com

  • 微信开发者工具:
    1.05.2103190

  • uniapp:
    3.1.7.20210330

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

skysowe

skysowe

昨天还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

skysowe

skysowe


<!-- 旧版本方式 -->  
<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 );  

            },  
        });  

    }  
}  
  • skysowe

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


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

    2021-04-04 11:47

l***@139.com

l***@139.com

2.16.0即可

w***@qq.com

w***@qq.com

APP登陆授权有影响吗?

m***@126.com

m***@126.com

    // 注意不能再   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.",请问你们怎么解决的呢

末

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

要回复问题请先登录注册