我正在尝试从我的YouTube视频中访问观看次数。我过去常常使用Google API的v2 for Youtube统计信息。但出于某些原因,我尝试的都没有效果。
首先,我尝试使用Google提供的API Explorer。它起作用了...它产生了这个请求:
所以我在curl中使用我在Google API控制台中创建的密钥尝试了它我还激活了Youtube API和Youtube API统计信息......
但是当我卷曲它时,我得到了这个错误:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
我不知道这意味着什么...
所以现在我尝试使用Google SDK。
我能够得到这个:
{
"access_token":"--------",
"expires_in":3600,
"created":1431449678
}
但后来我收到了这个错误:
致命错误:未捕获的异常'Google_Service_Exception' 消息'调用GET时出错 https://www.googleapis.com/analytics/v3/data/ga?ids=channel%3D%0000000&start-date=2015-05-01&end-date=2015-05-01&metrics=views&filters=video%3D%3D6cBs8212oyI: (403)“权限不足” /------/google-api-php-client/src/Google/Http/REST.php:111 堆栈跟踪:#0 /--------/google-api-php-client/src/Google/Http/REST.php(63): Google_Http_REST :: decodeHttpResponse(对象(Google_Http_Request) 对象(Google_Client))#1 [内部函数]: Google_Http_REST :: doExecute(对象(Google_Client) 对象(Google_Http_Request))#2 /--------/google-api-php-client/src/Google/Task/Runner.php(172): call_user_func_array(Array,Array)#3 /--------/google-api-php-client/src/Google/Http/REST.php(47): Google_Task_Runner-> run()#4 / ------ /谷歌-API的PHP的客户端/ SRC 在 的 / ------- /谷歌-API的PHP的客户端/ SRC /谷歌/ HTTP / REST.php 在线 111
所以这似乎是个问题:
(403)许可不足
我试图找到造成这种情况的原因,但无济于事。
此请求再次适用于此页面上的Google资源管理器:https://developers.google.com/youtube/analytics/v1/
以下是我用于请求观看Youtube视图的代码:
try {
$key = file_get_contents($key_file_location);
if( $key === false )
throw new Exception('Failed to open/read p12 key file.');
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/youtube.readonly', 'https://www.googleapis.com/auth/yt-analytics.readonly'),
$key
);
$client->setAssertionCredentials($cred);
// Check if the token is out of date
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
// Reset the service_token in the PHP session
echo $_SESSION['service_token'] = $client->getAccessToken();
} catch (Exception $e) {
//getStatsMailError( 'Caught exception: ' . $e->getMessage() );
error_log($e->getMessage());
}
//Option Paramaters
$optParams = array(
'filters' => 'video==6cBs8212oyI',
);
$result = $service->data_ga->get($channel_id, '2015-05-01', '2015-05-01', 'views', $optParams);
其余的工作是因为我能够获得access_token。