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

时间:2015-04-10 19:21:04

标签: c# asp.net youtube-api google-authentication

我尝试使用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服务帐户,但对于我的生活,我无法弄清楚如何使用其中一种进行身份验证。

你能指点我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

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

这背后的原因之一是取消将多个人上传到一个帐户;法律责任(对于YouTube和应用程序开发人员而言)太大了。唯一目前的替代方案是YouTube直接精简版计划(有多个客户端...请参阅YouTube的Github页面以查找它们),这为您提供了一个简单的管理/管理窗格,用于基于以下内容自动生成播放列表用户将视频上传到自己的帐户(换句话说,他们会将视频通过您的应用上传到他们的帐户,但您的帐户会记录下来并管理列表中可以/无法显示的内容)。

答案 1 :(得分:0)

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

然后,每当用户需要查看共享日历时,我只有逻辑表明如果过期日期已过,请使用存储的刷新令牌请求新的访问令牌并重置过期日期,然后我使用访问令牌进行Google Calendar API调用(在这种情况下获取事件列表)。