我想以编程方式将视频上传到我的 YouTube 频道,但是当我尝试使用 API 密钥上传时,我收到错误响应,该 API 不支持 API 密钥。
当我尝试使用 OAuth 时,我的程序总是打开浏览器并打开带有授权确认的 Google 页面,但我想在没有任何确认的情况下上传视频。
我也尝试使用服务帐户,但在文档中写道API不支持服务帐户。
如何在没有任何确认的情况下上传视频(例如,使用凭据)?
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 不支持服务帐户。
只要您存储刷新令牌并正确配置代码,就无法避免向用户弹出同意浏览器以请求对初始请求的同意,您就不会再看到它。