我正在使用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配置文件而没有任何问题。
有没有人遇到过这个错误?
答案 0 :(得分:0)
根据此documentation,youtubeSignupRequired
表示该用户已取消关联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频道。这是您上传视频之前的要求。如果谷歌能够针对这种情况改进他们的错误信息并使其更加冗长,那就太好了。
希望这有帮助!