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

如何在C#中实现无交互自动上传视频至YouTube频道?

实现YouTube无交互视频上传的解决方案

核心问题拆解

  • API Key仅能用于读取公开数据,无法完成视频上传这类需要用户权限的操作,因此报错属于正常限制。
  • 标准OAuth流程首次需要浏览器授权,但可通过离线授权模式持久化凭据,后续无需再手动确认。
  • YouTube Data API明确不支持服务账号,此方案完全不可行。

具体实现步骤

1. 首次授权并持久化凭据

修改OAuth授权代码,添加凭据文件存储逻辑,首次运行完成浏览器授权后,令牌会自动保存到本地,后续直接复用:

UserCredential credential;
string credPath = "token.json"; // 存储凭据的本地文件路径

using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        new[] { YouTubeService.Scope.YoutubeUpload },
        "user",
        CancellationToken.None,
        new FileDataStore(credPath, true) // 开启本地文件存储
    );
}

var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
});

首次运行代码时,会弹出浏览器引导完成授权,授权成功后token.json文件会自动生成,其中包含了可自动刷新的令牌信息。

2. 后续无交互运行

之后每次启动程序,FileDataStore会自动读取token.json中的凭据,当访问令牌过期时,会自动通过刷新令牌获取新的有效令牌,全程无需浏览器介入,实现无确认上传。

3. 关键注意事项

  • 确保Google Cloud控制台中,你的OAuth客户端ID类型为桌面应用(适配本地运行的程序场景)。
  • token.json和client_secrets.json包含敏感授权信息,禁止泄露或公开。
  • 若需要切换上传账号,直接删除token.json文件,重新运行程序完成新账号的授权即可。

原代码问题说明

你之前的OAuth代码未配置凭据持久化,每次运行都会重新发起授权请求,导致必须打开浏览器确认。添加FileDataStore后,凭据被本地保存,后续运行直接复用授权信息,无需重复验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:03:21