无法使用Google API SDK或仅使用密钥获取Youtube统计信息(视图)

时间:2015-05-12 18:59:43

标签: google-api youtube-api google-api-php-client

我正在尝试从我的YouTube视频中访问观看次数。我过去常常使用Google API的v2 for Youtube统计信息。但出于某些原因,我尝试的都没有效果。

首先,我尝试使用Google提供的API Explorer。它起作用了...它产生了这个请求:

获取https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DU9999999&start-date=2015-05-01&end-date=2015-05-01&metrics=views&dimensions=video&filters=video%3D%3D6cBs8212oyI&key= {YOUR_API_KEY}

所以我在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。

0 个答案:

没有答案