转身情兽
转身情兽
  • 发布:2022-04-01 00:21
  • 更新:2023-07-08 23:08
  • 阅读:3658

【报Bug】uniapp 字节小程序 getUserProfile bug

分类:uni-app

产品分类: uniapp/小程序/字节跳动

PC开发环境操作系统: Mac

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

第三方开发者工具版本号: 3.2.5-2

基础库版本号: 3.0.0-alpha-304012022030800

项目创建方式: CLI

CLI版本号: 3.0.0-alpha-304012022030800

示例代码:

// template:  
<button type="primary" @click="getUserProfile">获取用户信息</button>  
// js:  
setup() {  
    function getUserProfile() {  
      tt.getUserProfile({  
        success(res) {  
          debugger  
          console.log('tt.getUserProfile success,获取的用户信息:', res)  
        },  
        fail(err) {  
          console.log('tt.getUserProfile failed', err.errMsg)  
          tt.showModal({  
            title: '获取用户信息失败',  
            content: JSON.stringify(err),  
            showCancel: false,  
          })  
        },  
      })  
    }  
    return { getUserProfile }  
}  

操作步骤:

进入小程序点击按钮调用 getUserProfile api

预期结果:

正常显示授权弹窗

实际结果:

报错

bug描述:

  • 产品:uniapp(vue3)

  • api:uni.getUserProfile 字节跳动小程序

  • 结果:无法显示弹窗,看过字节小程序的API是能显示授权弹窗,但是uniapp的getUserProfile,会报错报错信息如附件。编译后的tap事件没有问题,里面也没有写异步代码。初始化已调用uni.login 并且成功。但是一直返回:must be invoked by user tap gesture code:为21500。翻过字节的api和uniapp应该没有别的差异,字节上的demo是能正常点击获取用户信息

2022-04-01 00:21 负责人:DCloud_UNI_LXH 分享
已邀请:

最佳回复

DCloud_UNI_LXH

DCloud_UNI_LXH

此问题在新版 alpha hx 3.4.5 上已得到修复。使用如下方式即可:

  1. 在有点击事件的节点上添加 data-eventsync="true"注意:全小写,例如:
    <button type="primary" data-eventsync="true" @click="getUserProfile">获取用户信息</button>
  • mcq

    那cli版本的需要怎么处理?

    2022-04-13 16:49

  • DCloud_UNI_LXH

    回复 7***@qq.com: cli 版本也一样,升级下包像上面那样修改即可

    2022-04-14 16:44

  • 4***@qq.com

    哥, 这边使用的3.0.0-alpha-3040720220422001, 字节小程序还是提示getUserProfile:fail must be invoked by user tap gesture

    2022-04-27 17:20

  • DCloud_UNI_LXH

    回复 4***@qq.com: 加 data-eventsync="true"

    2022-04-28 17:06

  • 4***@qq.com

    回复 DCloud_UNI_LXH: 加了

    2022-05-05 00:14

  • 小鲤鲤

    如果这个标签内部只有文本或者是没有子元素,添加data-eventsync="true"确实可以,但是如果标签内有子元素,还是不生效,任然会报fail must be invoked by user tap gesture错误。请教一下在这种情况下该怎么解决呢,有些情况下得将事件绑定在外层元素上

    <div data-eventsync="true" @click="navigate">

    <div>测试跳转</div>

    <!-- 测试跳转 -->

    </div>

    2023-03-27 11:53

  • DCloud_UNI_LXH

    回复 小鲤鲤: 在哪个平台?给里面的元素也加上试试看

    2023-03-28 15:44

  • 小鲤鲤

    回复 DCloud_UNI_LXH: uniapp版本:"@dcloudio/uni-app": "3.0.0-alpha-3060420220922001"。

    在里面的元素加上可以了。

    2023-03-30 18:18

  • 伯爵长风

    回复 小鲤鲤: 为什么我加了还是不行啊

    2023-09-25 18:40

  • 伯爵长风

    可以了,要给所有子元素设置

    2023-09-25 18:42

DCloud_UNI_Anne

DCloud_UNI_Anne

后续会优化 ,已加分,感谢您的反馈!

  • 转身情兽 (作者)

    有什么替代方案嘛?现在,需求要的急不知道怎么处理了

    2022-04-01 14:21

2***@qq.com

2***@qq.com

为什么第一次授权允许后第二次进来通过getSetting来判断是否授权,返回的全是true,就算第二次授权拒绝,返回的也是true。

转身情兽

转身情兽 (作者)

再爆一个bug,navigateToMiniProgram 这个api 也有问题, 返回 errMsg: "navigateToMiniProgram:fail must be invoked by user tap gesture" ,应该是同一个类型的问题,微信小程序没问题,但是字节小程序这个小程序之间的跳转api是跳转不了的,navigateToMiniProgramAppIdList 已经填写。。望官方早日处理

一定要学习

一定要学习

怎么解决的这个问题 ?

  • 4***@qq.com

    我试了3.4.5之后的好几个版本都不行, 不知道老哥这边解决了吗

    2022-04-27 17:39

  • 一定要学习

    回复 4***@qq.com: 可以了

    2022-05-05 14:56

  • 一定要学习

    需要改一下位置就可以了

    2022-05-05 14:57

龙工22332

龙工22332

老哥,付费咨询下,我的也是抖音上面跳转小程序各种方式都提示{"errMsg":"navigateToMiniProgram:fail must be invoked by user tap gesture","errNo":21500}

a***@qq.com

a***@qq.com

cli就没解决这个问题。现在用的 3.0.0-alpha-3060120220907002, 不敢升级, 一升级连首页都进不去了

g***@gmail.com

g***@gmail.com

还没修复吗 最新版本也这样,加了data-eventsync="true" 一下可以一下不行的

  • g***@gmail.com

    没事了 我自己的问题..

    2023-03-03 11:11

  • 梦曦i

    我也是这个问题,没看出来是哪里写的不对

    2024-05-09 10:14

a***@qq.com

a***@qq.com

终于解决快手问题了, 源码里有兼容性问题。 快手小程序会将dataset.eventsync解读成boolean类型,而uniapp则是用 eventsync===‘true’来判断的。

改成 :data-eventsync="'true'" 来解决。

f***@aliyun.com

f***@aliyun.com

组件嵌套后,通过$emit派发事件后,组件加上data-eventsync="true"也没有效果呀

要回复问题请先登录注册