查询 YouTube Analytics API .NET 时返回 403 禁止错误

Posted

技术标签:

【中文标题】查询 YouTube Analytics API .NET 时返回 403 禁止错误【英文标题】:403 Forbidden Error returned when querying YouTube Analytics API .NET 【发布时间】:2015-07-31 23:51:03 【问题描述】:

我已经阅读了大部分开发者控制台参考资料。

    我在 YouTube 网站的“YouTube Manager Google 帐户”下的 Google Developers Console 中创建了一个已安装项目。 我已启用 YouTube Data API v3 和 YouTube Analytics v1。 我为已安装的项目创建了凭据。

代码验证没有问题:

UserCredential credential;
            using (var stream = new FileStream(hds_opo_youtube_service.Properties.Settings.Default.clientIDFile, FileMode.Open, FileAccess.Read))
            
                credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    // This OAuth 2.0 access scope allows for read-only access to the authenticated 
                    // user's account, but not other types of account access.
                    new[]  YouTubeService.Scope.YoutubeReadonly,
                            YouTubeAnalyticsService.Scope.YtAnalyticsReadonly,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(this.GetType().ToString())
                );
            

            var youtubeService = new YouTubeService(new BaseClientService.Initializer()
            
                HttpClientInitializer = credential,
                ApplicationName = this.GetType().ToString()
            );
我可以使用 youtube 数据 API 从一个特定的播放列表中获取视频列表。然后我创建了一个 youtube 分析服务并尝试查询视图数据。那是当我得到:

发生错误:Google.Apis.Requests.RequestError Forbidden [403] 错误 [ 留言[禁止] 地点[ - ] 原因[禁止] 域名[全球] ]

我已尝试使用 API Explorer 解决此问题。这非常有帮助。当我尝试使用 YouTube 管理员所有者个人资料帐户进行身份验证时。查询失败。但如果我使用不同的 Google+ 信息页帐户,我可以让查询工作。 Google+ 信息页帐户有一个电子邮件帐户,但与 Google+ 信息页帐户的所有通信都被定向到经理所有者个人资料帐户。于是尝试将Google+页面账号添加到项目权限中,但是无法确认链接。我认为我的问题是 YouTube 频道归 Google+ 页面帐户所有。分配的经理所有者拥有不同的帐户,即个人资料帐户,即使它是 youtube 帐户的经理。我知道这听起来很令人困惑。有没有人对如何解决这个问题有任何想法。谢谢

【问题讨论】:

【参考方案1】:

好吧,我想我会回答我自己的问题。 YouTube 频道链接到 Google+ 企业页面。此页面不是完全意义上的 Google 帐户。它有一个自动生成的电子邮件,但它不是一个真实的电子邮件帐户。所有者经理是一个 google+ 个人资料帐户。在创建我的应用程序之前,我并不了解这种区别,因此当我最初尝试进行身份验证时,我可以在验证 Google+ 页面或 Google+ 个人资料之间进行选择。我选择了 Google+ 个人资料,认为它是 youtube 频道的所有者。然后所有后续身份验证都使用存储的刷新令牌,并且不再询问要针对两个 google+ 帐户中的哪一个进行身份验证。同时,我使用 API Explorer 并意识到我需要针对 Google+ 页面进行身份验证。所以我删除了存储的刷新令牌,然后再次运行代码。它让我选择了两个帐户。我选择了 Google+ 页面,并且 youtube 分析查询有效。

【讨论】:

以上是关于查询 YouTube Analytics API .NET 时返回 403 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章

如何从 YouTube Analytics API 获取属于当前用户的每个视频的指标?

YouTube Analytics API 是不是只是为您提供频道的统计信息?

10月31日V1被取消后,如何继续使用PHP客户端库'googleapis / google-api-php-client'访问'Youtube Analytics API&#

如何配置我的 localhost 以从 Youtube API 请求数据?

错误:“消息”:使用 Youtube 分析 API 时需要登录

拉取百分比视频观看了 youtube api