Youtube API V3 身份验证。上传到共享帐户

Youtube API V3 authentication. Uploading to shared account

我正在尝试使用 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 帐户,对于此应用程序,我们希望所有上传的视频都进入我们的帐户。因此,如果可能的话,我想继续使用 Public API 访问权限,但我找不到 V3 API 的任何示例。

我也调查了 OAuth2 服务帐户,但我一直无法弄清楚如何使用其中之一进行身份验证。

你能帮我指明正确的方向吗?

很遗憾,YouTube API 的 V3 不支持服务帐户,oAuth2 是唯一的身份验证方法。

这背后的原因之一是避免将多个人上传到一个帐户;法律责任(对 YouTube 和应用开发者而言)太大了。当前唯一的替代方案是 YouTube direct lite 程序(它有多个客户端......请参阅 YouTube 的 Github 页面以找到它们),它为您提供了一个简单的 management/admin 窗格,用于根据用户上传自动生成播放列表将视频导入他们自己的帐户(换句话说,他们通过您的应用将视频上传到他们的帐户,但您的帐户会记录下来并管理can/can未出现在列表中的内容)。

我最近遇到了类似的问题,只是我使用的是共享 Google Calendar 而不是 Youtube 帐户。我最终做的是添加一个只有我能看到的 authorize 按钮,单击时该按钮连接到初始授权请求。它从 Google 打开弹出窗口,我从共享帐户授予权限,并将返回的访问令牌、刷新令牌和到期日期存储在数据库中。

然后,每当用户需要查看共享日历时,我的逻辑就是如果到期日期已过,使用存储的刷新令牌请求新的访问令牌并重置到期日期,然后我使用访问令牌以进行我的 Google Calendar API 调用(在本例中获取事件列表)。