【问题标题】:Auto Upload of Videos to my account, using youtube Data API V3 without user consent未经用户同意使用 youtube Data API V3 将视频自动上传到我的帐户
【发布时间】:2016-04-10 13:08:48
【问题描述】:

我正在使用 Youtube Data API V3 使用 Oauth 2.0 身份验证将视频上传到我的 youtube 帐户。

 UserCredential credential;
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
);
}

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

在身份验证过程中,它会显示登录和同意屏幕以获取如图所示的授权

Oauth_UserConsent

我需要克服上述问题,以便在未经用户同意的情况下,我希望使用 OAuth 2.0 对 youtube 数据 API V3 进行身份验证并将视频上传到我的帐户。

所以我发现“服务帐户”可用于此类场景,但再次发现服务帐户不适用于 Youtube 数据 API,因为服务帐户需要关联的 YouTube 频道,并且您无法将新的或现有的频道与链接https://developers.google.com/youtube/v3/guides/moving_to_oauth的服务帐户 dotnet 中是否有任何替代方法可以跳过用户同意并以编程方式进行身份验证并以编程方式将视频上传到我的帐户

【问题讨论】:

标签: .net youtube-api google-api-dotnet-client youtube-data-api


【解决方案1】:

这只是用户第一次进行身份验证,他必须接受这些条款(允许您的应用访问他的资源...)。从那时起,库存储访问和刷新令牌。访问令牌的有效期为 60 分钟,到期后库使用刷新令牌刷新访问令牌并获取有效的令牌。

如果您根本不想征得用户同意,则应使用 https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth#service-account 中所述的 ServiceAccount 流程

【讨论】:

    【解决方案2】:

    V3 更新

    请参阅this SO answer here 了解工作中的 .NET Web 示例。对我来说,与 Google 提供的命令提示符示例相比,最大的变化是获取凭据的方式从 GoogleWebAuthorizationBroker.AuthorizeAsync() 更改为 GoogleAuthorizationCodeFlow(详见 Linked answer

    您需要获取刷新令牌并将其与 OAuth 密钥和秘密一起存储在您的代码中。

    更新: 我想出了自己的解决方案来做到这一点。我使用 .NET 进行 HTTP/REST 调用以获取 access_token,然后将其传递给 JavaScript 以执行实际上传,从而为您提供进度指示。

    在此处查看我的答案/解决方案https://stackoverflow.com/a/49516167/3790921

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 2020-07-13
      • 2016-08-22
      • 2021-07-29
      • 2014-11-22
      • 2013-12-16
      • 2021-11-23
      • 2019-01-11
      • 2015-10-11
      相关资源
      最近更新 更多