我正在使用Laravel-php,我有以下代码:
$client = new Google_Client();
$client->setClientId(env('GOOGLE_ID'));
$client->setClientSecret(env('GOOGLE_SECRET'));
//$client->setRedirectUri($redirect_uri);
$client->addScope("https://www.googleapis.com/auth/youtube.force-ssl");
$client->addScope("https://www.googleapis.com/auth/youtube");
$client->addScope("https://www.googleapis.com/auth/youtube.readonly");
$client->addScope("https://www.googleapis.com/auth/youtubepartner");
$youtube = new \Google_Service_YouTube($client);
$searchResponse = $youtube->channels->listChannels('snippet', array('mine' => true));
//$subscriptions = Curl::to('https://www.googleapis.com/youtube/v3/subscriptions')->withData(['part' => 'snippet', 'mine' => 'true'])->get();
echo "<pre>";
print_r($searchResponse);
上面的代码给出了以下错误:
Google_Service_Exception in REST.php line 118:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
}],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}
我也试过使用CURL调用,但这也给了我同样的错误,任何建议都会节省我的一天 我在代码中缺少什么?
答案 0 :(得分:1)
您的错误意味着您尚未设置Google API控制台项目。您正在访问的资源需要OAuth授权。您需要obtain authorization credentials in the Google Developers Console才能使用OAuth 2.0授权。
API支持API密钥和OAuth 2.0凭据。在您的情况下,为您的项目使用OAuth 2.0:
OAuth 2.0:您的应用程序必须发送OAuth 2.0令牌以及访问私有用户数据的任何请求。您的应用程序发送客户端ID,并可能发送客户端密钥以获取令牌。您可以为Web应用程序,服务帐户或已安装的应用程序生成OAuth 2.0凭据。
有关详细信息,请参阅Creating OAuth 2.0 credentials部分。
您还可以查看此相关主题:list user subscriptions to all youtube channels after getting access token
答案 1 :(得分:0)
首先,它需要是经过身份验证的电话 所以你需要让人通过Oauth2“认证”并收集令牌。
然后使用令牌发送此呼叫
https://www.googleapis.com/youtube/v3/subscriptions?part=id,snippet,contentDetails&maxResults=50&channelId='.$channelId.'&access_token='.$access_token
然后您可以访问JSON响应并收集它们。