Sono in grado di inoltrare richieste all'API di YouTube Analytics tramite API Explorer. Il mio codice sta tentando di utilizzare la libreria client PHP di Google, in particolare la classe Google_Service_YouTubeAnalytics. Sfortunatamente, non c'è documentazione su questa classe.Tutte le richieste all'API di YouTube Analytics tramite Google PHP Risultati della libreria in 400 Richiesta errata
Sto impostando le credenziali ID e Asserzione sul client. Sono abbastanza sicuro questo funziona correttamente, perché se cambio la chiave privata a qualcosa che so essere errato, ottengo:
{"code":400,"error":"Error refreshing the OAuth2 token, message: '{\n \"error\" : \"invalid_grant\"\n}'"}
Ma quando inserisco la chiave privata corretta, ottengo il seguente risposta:
{"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."}
non mi dire che cosa non è valido sulla query (che sarebbe incredibilmente utile), quindi non ho idea di cosa potrei fare in modo non corretto. Qualsiasi aiuto è apprezzato.
Ecco il mio codice che effettua la richiesta:
$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'
);
Inoltre, sto utilizzando la libreria client di Google Analytics nel mio codice e ciò funziona correttamente. Sto usando il codice quasi nello stesso modo. Uggh. –
La tua app sta effettivamente inviando la stringa "channel == CHANNEL_ID" come valore del parametro ids, o è la tua modifica quando hai incollato il codice di errore in SO? – jlmcdonald
No, l'ho modificato per nascondere il mio ID canale effettivo in questo post. Nel mio codice, è il mio valore ID del canale. –