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

如何验证应用中已注册Google API的用户为YouTube视频所有者

验证YouTube视频所有者身份的实现方案

核心思路

通过YouTube Data API获取目标视频的所属频道ID,再获取当前授权用户的频道ID,对比两者是否一致即可完成验证,全程需在用户授权的前提下操作。

具体步骤

  • 1. 配置OAuth权限与客户端
    在Google Cloud Console中为你的Chrome扩展创建OAuth客户端ID(类型选择Chrome应用),并申请https://www.googleapis.com/auth/youtube.readonly权限——这是读取视频和用户频道信息的最小必要权限,避免过度授权引发用户疑虑。

  • 2. 引导用户完成授权
    在Chrome扩展中使用chrome.identity.getAuthToken()接口获取用户的授权令牌,示例代码:

    chrome.identity.getAuthToken({interactive: true}, function(token) {
      if (chrome.runtime.lastError) {
        // 处理授权失败情况
        console.error(chrome.runtime.lastError.message);
        return;
      }
      // 拿到token后用于后续API调用
      useAuthToken(token);
    });
    
  • 3. 获取目标视频的所属频道ID
    调用YouTube Data API的videos.list接口,传入视频ID和part=snippet参数,提取返回结果中的snippet.channelId:

    async function getVideoChannelId(token, videoId) {
      const response = await fetch(`https://www.googleapis.com/youtube/v3/videos?part=snippet&id=${videoId}&key=你的API密钥`, {
        headers: { Authorization: `Bearer ${token}` }
      });
      const data = await response.json();
      if (data.items.length === 0) {
        throw new Error("视频不存在");
      }
      return data.items[0].snippet.channelId;
    }
    
  • 4. 获取当前用户的频道ID
    调用YouTube Data API的channels.list接口,传入part=id和mine=true参数,获取当前授权用户的频道ID:

    async function getUserChannelId(token) {
      const response = await fetch(`https://www.googleapis.com/youtube/v3/channels?part=id&mine=true&key=你的API密钥`, {
        headers: { Authorization: `Bearer ${token}` }
      });
      const data = await response.json();
      if (data.items.length === 0) {
        throw new Error("用户未关联YouTube频道");
      }
      return data.items[0].id;
    }
    
  • 5. 对比ID完成验证
    将步骤3和步骤4获取的两个频道ID进行比对,若一致则证明当前用户是该视频的所有者:

    async function verifyVideoOwner(token, videoId) {
      try {
        const videoChannelId = await getVideoChannelId(token, videoId);
        const userChannelId = await getUserChannelId(token);
        return videoChannelId === userChannelId;
      } catch (error) {
        console.error("验证失败:", error);
        return false;
      }
    }
    

注意事项

  • 确保你的API密钥已启用YouTube Data API服务,且在Google Cloud Console中配置了正确的Chrome扩展ID作为授权来源。
  • 处理各种异常场景:用户拒绝授权、视频被删除/设为私有、用户无YouTube频道等,给用户明确的提示。
  • 遵循Chrome扩展的权限规范,在manifest.json中声明identity权限以及API调用的主机权限。

内容的提问来源于stack exchange,提问作者ostheperson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:03:58