Ich habe mit der Google Analytics-API (V3) herumgespielt und bin auf einige Fehler gestoßen. Erstens ist alles korrekt eingerichtet und funktioniert mit meinem Testkonto. Wenn ich jedoch Daten von einer anderen Profil-ID (gleiches Google Accont / GA-Konto) abrufen möchte, wird ein 403-Fehler angezeigt. Das Seltsame ist, dass Daten von einigen GA-Konten Daten zurückgeben, während andere diesen Fehler erzeugen.
Ich habe das Token widerrufen und noch einmal authentifiziert, und jetzt kann ich anscheinend Daten von allen meinen Konten abrufen. Problem gelöst? Nicht. Da der Zugriffsschlüssel abläuft, werde ich erneut auf dasselbe Problem stoßen.
Wenn ich die Dinge richtig verstanden habe, könnte man das resfreshToken verwenden, um eine neue Authentifizierung zu erhalten.
Das Problem ist, wenn ich laufe:
$client->refreshToken(refresh_token_key)
Der folgende Fehler wird zurückgegeben:
Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }'
Ich habe den Code hinter der refreshToken-Methode überprüft und die Anforderung bis zur Datei "apiOAuth2.php" zurückverfolgt. Alle Parameter werden korrekt gesendet. Der grant_type ist innerhalb der Methode fest in 'refresh_token' codiert, daher fällt es mir schwer zu verstehen, was falsch ist. Das Parameterarray sieht folgendermaßen aus:
Array ( [client_id] => *******-uqgau8uo1l96bd09eurdub26c9ftr2io.apps.googleusercontent.com [client_secret] => ******** [refresh_token] => 1\/lov250YQTMCC9LRQbE6yMv-FiX_Offo79UXimV8kvwY [grant_type] => refresh_token )
Das Verfahren ist wie folgt.
$client = new apiClient();
$client->setClientId($config['oauth2_client_id']);
$client->setClientSecret($config['oauth2_client_secret']);
$client->setRedirectUri($config['oauth2_redirect_uri']);
$client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
$client->setState('offline');
$client->setAccessToken($config['token']); // The access JSON object.
$client->refreshToken($config['refreshToken']); // Will return error here
Ist das ein Fehler oder habe ich etwas völlig falsch verstanden?