在未经用户许可的情况下使用youtube Data API V3自动将视频上传到我的帐户

时间:2016-01-06 12:29:32

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

我正在使用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中是否有任何替代方法可以跳过用户同意并以编程方式进行身份验证并以编程方式将视频上传到我的帐户

2 个答案:

答案 0 :(得分:1)

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

如果您根本不想获得用户同意,则应使用http://localhost:4502/system/console/adapters

中所述的ServiceAccount流程

答案 1 :(得分:0)

V3更新

有关运行.NET Web示例的信息,请参阅this SO answer here。对我而言,Google提供的命令提示示例的重大变化是从GoogleWebAuthorizationBroker.AuthorizeAsync()GoogleAuthorizationCodeFlow获取凭据的变化(详见Linked answer

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

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

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