uni-app 编译到抖音小程序 tt.getUserProfile 报错 must be invoked by user tap gesture
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的代码片段,可以正常授权
抖音里面有登录功能的,必须要有抖音授权登录。现在因为这个审核被卡住无法上架了
抖音手机号授权必须要正式运营才能获取
在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>
注意几点:
- 使用了
#ifdef TT
和#endif
来进行条件编译,确保这段代码只在编译为抖音小程序时生效。 desc
参数是必需的,用于向用户解释为什么需要获取他们的信息。getUserProfile
方法被绑定到按钮的点击事件上,确保只有在用户点击按钮时才会调用tt.getUserProfile
。
通过这种方式,你可以确保tt.getUserProfile
的调用符合抖音小程序的安全要求,同时保持代码的整洁和可维护性。如果你的应用需要支持多个小程序平台,记得在条件编译块中添加针对其他平台的处理逻辑。