如何在 C# 上以编程方式将视频上传到我的 YouTube 频道?

问题描述 投票:0回答:1

我想以编程方式将视频上传到我的 YouTube 频道,但是当我尝试使用 API 密钥上传时,我收到错误响应,该 API 不支持 API 密钥。

当我尝试使用 OAuth 时,我的程序总是打开浏览器并打开带有授权确认的 Google 页面,但我想在没有任何确认的情况下上传视频。

我也尝试使用服务帐户,但在文档中写道API不支持服务帐户。

如何在没有任何确认的情况下上传视频(例如,使用凭据)?

c# google-api youtube-api google-oauth google-api-dotnet-client
1个回答
-1
投票

API 密钥仅允许您访问公共数据,您可以使用 api 密钥搜索 YouTube 公共视频。但是上传视频需要帐户所有者的同意。

为了获得同意,我们使用 OAUTH2 来请求用户的同意,您将获得一个访问令牌和一个刷新令牌。访问令牌将在一小时后过期,但是您可以在需要时使用刷新令牌来请求新的访问令牌。您只需存储它并使用它来请求新的访问令牌即可。

在您使用 C# 作为桌面应用程序的情况下,您的代码应该如下所示

credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        // This OAuth 2.0 access scope allows an application to upload files to the
        // authenticated user's YouTube channel, but doesn't allow other types of access.
        new[] { YouTubeService.Scope.YoutubeUpload },
        "user",
        CancellationToken.None
    );

“用户”表示已登录的用户,他们的凭据默认存储在%appData%中,因此下次该应用程序运行时将不会请求授权。所以只要你授权一次你的代码就可以继续工作。

YouTube API 不支持服务帐户。

只要您存储刷新令牌并正确配置代码,就无法避免向用户弹出同意浏览器以请求对初始请求的同意,您就不会再看到它。

© www.soinside.com 2019 - 2024. All rights reserved.