uni-app 编译到抖音小程序 tt.getUserProfile 报错 must be invoked by user tap gesture

发布于 1周前 作者 yibo5220 来自 uni-app

uni-app 编译到抖音小程序 tt.getUserProfile 报错 must be invoked by user tap gesture

产品分类

uniapp/小程序/字节跳动

开发环境信息

项目 详情
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win11
HBuilderX类型 正式
HBuilderX版本号 4.45
第三方开发者工具版本号 v4.3.3
基础库版本号 3.51.0.10
项目创建方式 HBuilderX

操作步骤

运行附件代码

预期结果

能正常调用

实际结果

调用报错

bug描述

tt.getUserProfile抖音要求必须是tap事件里调用,但是HBuilderX编译后多了一层导致失败,报错getUserProfile:fail must be invoked by user tap gesture
最后两张张图是抖音小程序官方demo的代码片段,可以正常授权

Image Image Image Image Image Image


4 回复

抖音里面有登录功能的,必须要有抖音授权登录。现在因为这个审核被卡住无法上架了


抖音手机号授权必须要正式运营才能获取

在uni-app中编译到抖音小程序时,如果你遇到tt.getUserProfile报错提示“must be invoked by user tap gesture”,这意味着tt.getUserProfile接口必须在用户的点击事件中被调用。这是出于安全和用户体验的考虑,防止滥用用户信息。

为了解决这个问题,你需要确保tt.getUserProfile是在用户点击某个按钮或其他可交互元素时调用的。下面是一个简单的代码示例,展示了如何在uni-app中实现这一点。

首先,在你的页面的<template>部分,添加一个按钮,用于触发用户授权:

<template>
  <view>
    <button type="primary" @click="getUserProfile">获取用户信息</button>
  </view>
</template>

然后,在页面的<script>部分,定义getUserProfile方法:

<script>
export default {
  methods: {
    getUserProfile() {
      #ifdef TT // 条件编译,仅针对抖音小程序
      tt.getUserProfile({
        desc: '用于完善会员资料', // 向用户展示的请求授权信息
        success: (res) => {
          console.log('用户信息:', res.userInfo);
          // 在这里处理获取到的用户信息
        },
        fail: (err) => {
          console.error('获取用户信息失败:', err);
        }
      });
      #endif

      #ifndef TT // 非抖音小程序平台处理逻辑(可选)
      // 这里可以添加其他平台的用户信息获取逻辑
      #endif
    }
  }
}
</script>

注意几点:

  1. 使用了#ifdef TT#endif来进行条件编译,确保这段代码只在编译为抖音小程序时生效。
  2. desc参数是必需的,用于向用户解释为什么需要获取他们的信息。
  3. getUserProfile方法被绑定到按钮的点击事件上,确保只有在用户点击按钮时才会调用tt.getUserProfile

通过这种方式,你可以确保tt.getUserProfile的调用符合抖音小程序的安全要求,同时保持代码的整洁和可维护性。如果你的应用需要支持多个小程序平台,记得在条件编译块中添加针对其他平台的处理逻辑。

回到顶部