2016-09-15 46 views
15

嘗試執行YouTube分析API時,我收到錯誤消息。嘗試執行YouTube分析API時出現'禁止發生錯誤'

發生服務錯誤:錯誤調用get https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DUCaayLD9i5x4MmIoVZxXSv_g&start-date=2016-08-01&end-date=2016-08-07&metrics=views&dimensions=7DayTotals: (403)禁止

這裏是我的代碼:

require_once __DIR__.'\google-api-php-client-1-master\src\Google\autoload.php'; 
require_once __DIR__.'\google-api-php-client-1-master\src\Google\Client.php'; 
require_once __DIR__.'\google-api-php-client-1-master\src\Google\Service\YouTube.php'; 
session_start(); 
$key = file_get_contents('mykey.json'); 
$OAUTH2_CLIENT_ID = 'xx-xx-xx'; 
$OAUTH2_CLIENT_SECRET = 'xxx'; 
$scope = array("https://www.googleapis.com/auth/youtube.force-ssl", "https://www.googleapis.com/auth/youtubepartner-channel-audit", "https://www.googleapis.com/auth/youtube", "https://www.googleapis.com/auth/youtube.readonly", "https://www.googleapis.com/auth/yt-analytics.readonly", "https://www.googleapis.com/auth/yt-analytics-monetary.readonly","https://www.googleapis.com/auth/youtubepartner"); 

    $client = new Google_Client(); 
    $client->setClientId($OAUTH2_CLIENT_ID); 
    $client->setClientSecret($OAUTH2_CLIENT_SECRET); 
    $client->setAccessType('offline'); 
    $client->setAccessToken($key); 
    $client->setScopes($scope); 
     if ($client->getAccessToken()) {   
    //Check to see if our access token has expired. If so, get a new one and save it to file for future use. 
     if($client->isAccessTokenExpired()) { 
      //refresh your access token if it's expired 
      $newToken = json_decode($client->getAccessToken()); 
      $client->refreshToken($newToken->refresh_token); 
      file_put_contents('mykey.json', $client->getAccessToken()); 
     } 

     $analytics = new Google_Service_YouTubeAnalytics($client); 
      $channel_url = 'UCaayLD9i5x4MmIoVZxXSv_g'; 
      $ids = 'channel==' . $channel_url . ''; 
      $end_date = '2016-08-07'; 
      $start_date = '2016-08-01'; 
      $optparams = array(
      'dimensions' => '7DayTotals', 
      ); 
      $metric = 'views'; 
      $api = $analytics->reports->query($ids, $start_date, $end_date, $metric, $optparams); 
      echo '<pre>';print_r($api);die; 
    } 

我已經啓用'youtube analytic API'和我得到的access_token from here

什麼是wro用我的代碼,或者我們需要做更多的東西來擺脫這個?

+0

任何人都可以請建議我如何解決這個問題。 – Rahul

+0

嗨@Rahul,您在代碼中提及您想要獲取分析的視頻ID在哪裏?它在代碼中缺失。 –

+0

我不認爲它需要視頻ID,我只想獲得特定頻道的30天或7天總計視圖。 – Rahul

回答

1

看着你的代碼,看起來你正在生成一個新的訪問令牌,並將它保存到文件中(使第一個令牌無效)。

嘗試:

if($client->isAccessTokenExpired()) { 
     //refresh your access token if it's expired 
     $newToken = json_decode($client->getAccessToken()); 
     $client->refreshToken($newToken->refresh_token); 
     file_put_contents('mykey.json', $newToken); 
    } 
相關問題