未经用户同意使用 youtube Data API V3 将视频自动上传到我的帐户
Posted
技术标签:
【中文标题】未经用户同意使用 youtube Data API V3 将视频自动上传到我的帐户【英文标题】:Auto Upload of Videos to my account, using youtube Data API V3 without user consent 【发布时间】: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 中是否有任何替代方法可以跳过用户同意并以编程方式进行身份验证并以编程方式将视频上传到我的帐户
【问题讨论】:
您找到解决方案了吗?我也在寻找同样的东西! 在这里查看我的答案/解决方案***.com/a/49516167/3790921 【参考方案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://***.com/a/49516167/3790921
【讨论】:
以上是关于未经用户同意使用 youtube Data API V3 将视频自动上传到我的帐户的主要内容,如果未能解决你的问题,请参考以下文章
从使用 YouTube 数据 API 的个人项目中删除 Google 未经验证的警告
突然在 YouTube V3 API 上获得 Oauth 2.0 同意的 403(禁止)
Youtube Data API C# - 无需请求用户凭据即可使用