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

使用Youtube Data V3插入视频遇Unauthorized及配额超限问题求助

问题描述

我是刚接触Google Cloud的初级开发者,已完成以下操作:

  • 在GCP创建项目
  • 启用Youtube Data V3 API
  • 为服务账号创建密钥
  • 创建Youtube频道
  • 按照指定指南将服务账号JSON集成到项目中

尝试从本地上传小于2MB的视频到Youtube时,未成功就因多次触发请求导致配额超限,之前还遇到过Unauthorized(未授权)问题。

附错误截图

Youtube API配额超限错误截图

代码片段

String localFilePath = "/home/ubuntu/video.mp4";
FileContent videoContent = new FileContent("video/*", new File(localFilePath));


final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
YouTube youTube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY, new HttpCredentialsAdapter(getServiceCredential()))
  .setApplicationName("Game")
  .build();
YouTube.Videos.Insert videoInsert = youTube.videos()
  .insert(Collections.singletonList("snippet,statistics,status"), videoMetadata, videoContent);

private InputStream getCredentialInputStream() throws IOException {
  InputStream in = YouTubeService.class.getResourceAsStream(CREDENTIAL_PATH);
  if (in == null) {
    throw new FileNotFoundException("Resource not found: ".concat(CREDENTIAL_PATH));
  }
  return in;
}


private GoogleCredentials getServiceCredential() throws IOException {
  GoogleCredentials credentials = ServiceAccountCredentials.fromStream(
      Objects.requireNonNull(getCredentialInputStream()))
    .createScoped(SCOPES);
  return credentials;
}
解决方案

先解决Unauthorized未授权问题

  1. 服务账号绑定Youtube频道
    服务账号无法直接操作Youtube频道,必须将其添加为频道的所有者或管理者:

    • 打开Youtube工作室,进入频道设置→权限
    • 点击“邀请用户”,输入服务账号的邮箱(从GCP服务账号页面获取),授予“所有者”权限
    • 确认邀请后,服务账号才能获得该频道的操作权限
  2. 检查权限范围(Scopes)
    确保SCOPES包含Youtube Data API的必要上传权限,代码示例:

    private static final List<String> SCOPES = Arrays.asList(YouTubeScopes.YOUTUBE_UPLOAD, YouTubeScopes.YOUTUBE);
    

    避免使用错误或过于宽泛的权限范围。

  3. 验证凭证文件加载
    确认CREDENTIAL_PATH指向的服务账号JSON文件路径正确,也可尝试直接读取本地文件路径,规避类加载路径问题:

    private InputStream getCredentialInputStream() throws IOException {
      return new FileInputStream(new File("/path/to/your/service-account.json"));
    }
    

解决配额超限问题

  1. 优化请求逻辑,减少无效请求

    • 上传前先调用channels.list接口测试权限有效性,避免无效上传消耗配额
    • 给上传请求添加针对性重试机制,仅在网络错误时重试:
      videoInsert.setRetryOnServerError(true);
      videoInsert.setNumberOfRetries(2);
      
  2. 查看并调整配额

    • 登录GCP控制台,进入Youtube Data V3 API的配额页面,确认当前配额使用情况
    • 测试阶段可申请临时配额提升,需明确说明使用场景
  3. 启用分片上传
    即使视频小于2MB,启用分片上传也能避免单次请求失败后重复上传消耗配额:

    videoInsert.setChunkSize(1024 * 1024); // 设置1MB分片大小
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:22:52