YouTube数据API listChannels请求有时无法为具有多个频道的用户返回频道数据

时间:2017-06-30 14:31:25

标签: php youtube youtube-api youtube-data-api

我正在使用google-api-php-client来查询YouTube数据API。

首先,我从具有以下范围的用户那里获得一个令牌:

[
    'https://www.googleapis.com/auth/userinfo.email',
    'https://www.googleapis.com/auth/userinfo.profile',
    'https://www.googleapis.com/auth/youtube.readonly',
    'https://www.googleapis.com/auth/yt-analytics-monetary.readonly',
    'https://www.googleapis.com/auth/yt-analytics.readonly',
    'https://www.googleapis.com/auth/youtubepartner',
    'https://www.googleapis.com/auth/youtubepartner-channel-audit',
]

然后我提出listChannels请求:

(new \Google_Service_YouTube($client))->channels->listChannels('snippet', [
    'mine'       => 'true',
    'maxResults' => 1,
]);

大部分时间它都像魅力一样。我得到他们的频道数据。

但有时它会抛出代码401的异常和错误消息:

{
 "error": {
  "errors": [
   {
    "domain": "youtube.header",
    "reason": "youtubeSignupRequired",
    "message": "Unauthorized",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Unauthorized"
 }
}

对于拥有多个频道的用户来说,似乎会发生这种情况。但我尝试在我的个人帐户中添加新频道,并在授权通过OAuth访问时选择新频道。它工作得很好。

就其发生的原因而言,这非常令人困惑,而且错误信息并没有多大意义。因为他们的代币肯定很好,我可以更新它们或查询他们的Google Plus配置文件而没有任何问题。

有没有人遇到过这个错误?

1 个答案:

答案 0 :(得分:0)

根据此documentationyoutubeSignupRequired表示该用户已取消关联Google Account,这意味着该用户拥有Google帐户但没有YouTube频道。

  

如果您尝试使用OAuth 2.0服务帐户流,则会出现此错误。 YouTube不支持服务帐户,如果您尝试使用服务帐户进行身份验证,则会收到此错误。

     

YouTube API blog post介绍Google帐户支持还会更详细地讨论youtubeSignupRequired错误。虽然博客文章解释了API 2.1版的错误,但错误的含义仍然适用。

以下是一些可能有用的相关帖子:

  • Youtube API v3 return 401 when i try to upload video

      

    服务帐户无法使用youtube。另外请确保如果您使用的是Gmail密码,则必须将其链接到youtube,否则您将获得401。

  • Youtube v3 api 401 Unauthorized

      

    “youtubeSignupRequired”的原因通常表示YouTube帐户尚未正确设置,或者您尚未创建自己的YouTube频道。这是您上传视频之前的要求。如果谷歌能够针对这种情况改进他们的错误信息并使其更加冗长,那就太好了。

希望这有帮助!