You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Flutter+Supabase的YouTube行为追踪与用户奖励实现问询

追踪YouTube用户行为方案(Flutter + Supabase)

核心依赖:YouTube Data API v3

所有用户的点赞、订阅操作验证必须通过YouTube官方API实现——这类行为属于用户私人数据,第三方无法仅通过客户端行为判定,必须经用户授权后调用API校验。


1. 验证用户点赞操作

  • 权限要求:需用户授权https://www.googleapis.com/auth/youtube.readonly或youtube.force-ssl权限。
  • 实现步骤:
    1. Flutter中使用googleapis包,通过OAuth 2.0获取用户访问令牌。
    2. 调用videos.getRating接口,传入目标视频ID和用户令牌,检查返回的rating字段是否为like。
    3. 验证通过后,在Supabase的user_actions表中记录该行为并标记为已验证,作为奖励发放依据。

2. 验证用户订阅操作

  • 权限要求:同点赞操作,需用户授权读取订阅数据的权限。
  • 实现步骤:
    1. 调用subscriptions.list接口,设置参数mine=true(代表当前授权用户)和channelId为目标频道ID。
    2. 检查返回结果中是否存在目标频道的订阅记录。
    3. 验证通过后,在Supabase中记录用户订阅状态;可定期通过API重新校验,防止用户取消订阅后重复领奖。

3. 统计视频观看时长

  • 内嵌播放(推荐):
    使用Flutter的youtube_player_flutter包(封装YouTube IFrame Player API),监听播放事件:
    • 通过onStateChanged监听播放/暂停状态,仅在播放时累计时长。
    • 定期调用getCurrentTime获取播放进度,将有效观看时长上传到Supabase的user_watch_history表。
    • 需处理后台切换、应用退出等场景,及时暂停计时避免虚增时长。
  • 跳转YouTube App播放:
    无法直接追踪单个用户的观看时长,仅能通过YouTube Data API的videos.getStatistics获取频道级总播放时长数据,无法关联到单个用户,因此不推荐此方式。

4. Supabase后端配合

  • 数据表设计:
    创建两张核心表:
    • user_youtube_actions:存储用户点赞/订阅记录,字段包括user_id(关联Supabase用户ID)、target_id(视频/频道ID)、action_type(like/subscribe)、verified(布尔值,标记是否通过API验证)、created_at。
    • user_watch_history:存储观看时长,字段包括user_id、video_id、total_duration、last_updated_at。
  • 奖励发放逻辑:
    仅当verified字段为true时触发奖励发放;可通过Supabase Edge Functions设置定时任务,定期重新校验用户订阅/点赞状态,清理已取消的无效记录。

重要注意事项

  • 严格遵守YouTube服务条款,禁止诱导用户点赞/订阅以获取奖励,否则可能导致API权限被封禁。
  • OAuth授权需明确告知用户权限用途,不得静默授权。
  • 观看时长统计需排除无效场景(如静音播放、后台挂播),确保数据真实有效。

内容的提问来源于stack exchange,提问作者Ch Abubakar Arain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 02:50:09