2014-10-17 14 views
6

400 Geçersiz Request Google PHP Kütüphane Sonuçlar yoluyla Youtube Analytics API Tüm İstekler. Kodum Google PHP İstemci kütüphanesi, özellikle Google_Service_YouTubeAnalytics sınıfını kullanmaya çalışıyor. Maalesef, bu sınıfa ilişkin bir belge bulunmamaktadır.başarıyla API Explorer üzerinden Youtube Analytics API isteklerini yapmak mümkün

ben istemci üzerinde kimliği ve Onaylama Kimlik kuruyorum.

{"code":400,"error":"Error refreshing the OAuth2 token, message: '{\n \"error\" : \"invalid_grant\"\n}'"}

Ama doğru özel anahtarı eklediğinizde, aşağıdaki alıyorum: Oldukça Benim bir özel anahtarı değiştirirseniz ben yanlış biliyorum çünkü bu, doğru çalıştığından emin değilim, ben olsun cevabı:

{"code":400,"error":"Error calling GET https:\/\/www.googleapis.com\/youtube\/analytics\/v1\/reports?ids=channel%3D%3DCHANNEL_ID&start-date=2014-09-01&end-date=2014-09-05&metrics=views%2Cuniques: (400) Invalid query. Query did not conform to the expectations."}

O (inanılmaz yararlı olacaktır) sorgu hakkında geçersiz söyle vermez, bu yüzden ben yanlış yapıyor olabilir hiçbir fikrim yok. Herhangi bir yardım takdir edilir. İşte

istekte benim kodudur:

$client = new \Google_Client(); 
$client->setApplicationName(self::APP_NAME); 

// set some stuff 
$client->setClientId(self::CLIENT_ID); 
$client->setClientSecret(self::CLIENT_SECRET); 
$client->setAssertionCredentials(new \Google_Auth_AssertionCredentials(
    self::CRED_ID, 
    [ 
     "https://www.googleapis.com/auth/youtube.readonly", 
     'https://www.googleapis.com/auth/yt-analytics.readonly' 
    ], 
    self::youtubeKey() 
)); 

$youtubeService = new \Google_Service_YouTubeAnalytics($client); 
$resp = $youtubeService->reports->query(
    self::CHANNEL_ID, 
    '2014-09-01', 
    '2014-09-05', 
    'views,uniques' 
); 
+0

Ayrıca, kodumdaki Google Analytics istemci kitaplığını kullanıyorum ve bu iyi çalışıyor. Kodu neredeyse aynı şekilde kullanıyorum. Uggh. –

+0

Uygulamanız aslında "channel == CHANNEL_ID" dizesini ids parametresinin değeri olarak gönderiyor mu, yoksa hata kodunu SO'ya yapıştırdığınızda yaptığınız değişiklik mi? – jlmcdonald

+0

Hayır, bu yayındaki gerçek kanal kimliğimi gizlemek için bunu değiştirdim. Kodumda, kanal kimliğimin değeri. –

cevap

0

Sen emin değilim Ayrıca

https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel_ID&start-date=2014-09-01&end- 
date=2014-10-01&metrics=views%2Cuniques&key={YOUR_API_KEY} 

anahtar bir Google API eklemeniz gerekiyorsa "% 2Cuniques" => "benzersiz" geçerli metriktir.

Geçerli bir bağlantı oluşturmak için Google otomatik aracını kullanabilirsiniz. Bir desteklenmeyen sorgu yapıyoruz

https://developers.google.com/youtube/analytics/v1/

1

, bu görüşlerini kullanmak için hiçbir mümkündür & benzersizlere sağlanan hiçbir boyutlarıyla. Sen Youtube's Analytics API Reference bunu kontrol edebilirsiniz.

gün gibi bunu bir boyut eklemek deneyin ve işe yarayacak:

200 OK 

- Show headers - 

{ 
"kind": "youtubeAnalytics#resultTable", 
"columnHeaders": [ 
    { 
    "name": "day", 
    "columnType": "DIMENSION", 
    "dataType": "STRING" 
    }, 
    { 
    "name": "views", 
    "columnType": "METRIC", 
    "dataType": "INTEGER" 
    }, 
    { 
    "name": "uniques", 
    "columnType": "METRIC", 
    "dataType": "INTEGER" 
    } 
], 
"rows": [ 
    [ 
    "2014-09-04", 
    1250, 
    621 
    ], 
    [ 
    "2014-09-05", 
    1265, 
    577 
    ], 
    [ 
    "2014-09-03", 
    1255, 
    557 
    ], 
    [ 
    "2014-09-01", 
    1076, 
    532 
    ], 
    [ 
    "2014-09-02", 
    1182, 
    570 
    ] 
] 
} 

Google's APIs Explorer sırayla çok yararlı bir araçtır şudur:

$youtubeService = new \Google_Service_YouTubeAnalytics($client); 
$resp = $youtubeService->reports->query(
    self::CHANNEL_ID, 
    '2014-09-01', 
    '2014-09-05', 
    'views,uniques', 
    array('dimensions' => 'day') 
); 

Bu sorgu benzer bir Yanıtını alacak sorgularınızı test edin. Kaynak kodu ve tek başlarına sınıflara göz atabilirsiniz dokümantasyon amacıyla


, çok iyi belgelenmiş ve "belki" kendiliğinden gelir.

  • Client.php

  • YouTubeAnalytics.php
    • daha yeni bir yaklaşım erişim yetkisi için OAuth 2.0 protokolünü kullanarak bu API isteklerini yapmaktır. OAuth 2.0 Playground

      Temel olarak, bir belirteç erişim ve öncesinde sona erdiğinde uygulamak için onun yenileme jetonu almak gerekir:
      tarihinde tüm bu şeyleri denemek için inanılmaz bir kaynak sağlamaktadır.

      $client = new \Google_Client(); 
      $client->setApplicationName(self::APP_NAME); 
      
      // set some stuff 
      $client->setClientId(self::CLIENT_ID); 
      $client->setClientSecret(self::CLIENT_SECRET); 
      
      // Set oAuth info 
      $client->addScope(\Google_Service_YouTubeAnalytics::YT_ANALYTICS_READONLY); 
      $client->setAccessToken($accessToken); 
      
      // Check if token is expired 
      if ($client->isAccessTokenExpired()) { 
          $client->refreshToken($refreshToken()); 
          $newToken = $client->getAccessToken(); 
      
          $authObj = json_decode($newToken); 
          if (!is_object($authObj)) { 
           throw new \Google_Auth_Exception('Error on updating oAuth tokens'); 
          } 
      
          //update tokens 
          //...    
      } 
      
      $youtubeService = new \Google_Service_YouTubeAnalytics($client); 
      

      Umut eder!

    İlgili konular