我正在尝试使用 C# 更新现有的 Asp.Net 应用程序,以避免弃用 Youtube V2 API。 第一个挑战是弄清楚如何使用新的 API 进行身份验证。
以下是应用程序当前进行身份验证的方式:
string developerKey = (My Developer Key here);
string username = (My username here);
string password = (My password here);
ytService = new YouTubeService("SampleApplication", developerKey);
ytService.setUserCredentials(username, password);
我已经研究并查看了 V3 API 示例,它们都使用 OAuth2 进行身份验证,如下所示:
UserCredential credential;
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
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
);
}
但是,这会提示用户登录到自己的Google帐户,对于此应用程序,我们希望所有上传的视频都进入我们的帐户。 因此,如果可能的话,我想继续使用公共 API 访问,但我找不到任何 V3 API 的示例。
我还调查了OAuth2服务帐户,但是对于我的生活,我无法弄清楚如何使用其中一个进行身份验证。
你能帮我指出正确的方向吗?
我最近遇到了类似的问题,除了我使用的是共享Google Calendar
而不是Youtube
帐户。 我最终做的是添加一个只有我才能看到的authorize
按钮,单击时该按钮与初始授权请求挂钩。 它从Google
打开弹出窗口,我从共享帐户授予权限,并将返回的访问令牌、刷新令牌和到期日期存储在数据库中。
每当用户需要查看共享日历时,我只有逻辑说如果过期日期已过,使用存储的刷新令牌请求新的访问令牌并重置到期日期,然后我使用访问令牌进行Google Calendar
API 调用(在本例中获取事件列表)。
遗憾的是,YouTube API 的 V3 不支持服务帐号,oAuth2 是唯一的身份验证方法。
这背后的原因之一是取消将多个人上传到一个帐户; 法律责任(对于YouTube和应用程序开发人员)太大了。目前唯一的替代方案是 YouTube 直接精简版程序(它有多个客户端......请参阅YouTube的Github页面以找到它们),它为您提供了一个简单的管理/管理窗格,用于根据用户将视频上传到自己的帐户自动生成播放列表(换句话说,他们通过您的应用程序将视频上传到他们的帐户,但您的帐户会记录它并管理列表中可以/不能显示的内容)。