使用简单的API密钥进行公共API调用 - Youtube Analytics API

时间:2015-07-03 09:33:47

标签: php api youtube-api youtube-analytics-api

我正在尝试使用简单的密钥在Youtube分析API上进行公开调用。这是我的PHP代码:

<?
set_include_path('YoutubeAPI/src/Google');
require_once 'autoload.php';
session_start();

$client = new Google_Client();
$client->setApplicationName("xxxxxxxxxxxxxxxxxxxx");
$client->setDeveloperKey('xxxxxxxxxxxxxxxxxxxxxxx');
$youtube = new Google_Service_YouTubeAnalytics($client);

$resp = $youtube->reports->query('channel==UCww2zZWg4Cf5xcRKG-ThmXQ','2014-09-01','2014-09-05','views');
?>

我收到此错误:

[03-Jul-2015 11:29:26 Europe/Berlin] PHP Fatal error:  Uncaught exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com//youtube/analytics/v1/reports?ids=channel%3D%3DUCww2zZWg4Cf5xcRKG-ThmXQ&start-date=2014-09-01&end-date=2014-09-05&metrics=views&key=xxxxxxxxxxxxxxxxx: (401) Login Required' in /home/optimaje/public_html/statstn/YoutubeAPI/src/Google/Http/REST.php:110
Stack trace:
#0 /home/optimaje/public_html/statstn/YoutubeAPI/src/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client))
#1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request))
#2 /home/optimaje/public_html/statstn/YoutubeAPI/src/Google/Task/Runner.php(174): call_user_func_array(Array, Array)
#3 /home/optimaje/public_html/statstn/YoutubeAPI/src/Google/Http/REST.php(46): Google_Task_Runner->run()
#4 /home/optimaje/public_html/statstn/YoutubeAPI/src/Google/Client.php(593): Google_Http_REST::execute(Object(Google_Client), Object(Google in /home/optimaje/public_html/statstn/YoutubeAPI/src/Google/Http/REST.php on line 110

我正在寻找一周以来的解决方案而且我还在迷路。哪里出错?有人可以给我一个工作示例代码吗?

PS:我不想使用Oauth2登录。

1 个答案:

答案 0 :(得分:1)

使用公共API密钥访问Google API与使用Oauth2相似。请注意,此功能仅适用于不需要身份验证的呼叫,如果需要进行身份验证,则需要使用Oauth2,因为YouTube API不支持服务帐户身份验证。

代码摘自http://www.yiiframework.com/wiki/653/displaying-sorting-and-filtering-model-relations-on-a-gridview/

$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$apiKey = "<YOUR_API_KEY>"; // Change this line.
// Warn if the API key isn't changed.
if (strpos($apiKey, "<") !== false) {
  echo missingApiKeyWarning();
  exit;
}
$client->setDeveloperKey($apiKey);