未经用户同意,使用youtube Data API V3将视频自动上传到我的帐户



我使用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

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

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

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

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

V3 更新

请参阅此处的SO答案,了解如何使用.NET web示例。对我来说,与谷歌提供的命令提示符示例相比,最大的变化是从GoogleWebAuthorizationBroker.AuthorizeAsync()GoogleAuthorizationCodeFlow获取凭据的变化(有关详细信息,请参阅链接答案)

您需要获得一个刷新令牌,并将其与OAuth-Key和Secret一起存储在代码中。

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

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

相关内容

  • 没有找到相关文章

最新更新