2012-03-28 4 views
1

Ich authentifizierte eine einfache erhalten Anfrage an die Core Reporting API mit einem Dienstkonto. Aber die Antwort ist immer:Google Server-zu-Server-authentifizierte Anfrage zurückgibt verboten 403

{"error":{"errors": [{"message":"Forbidden"}],"code":403,"message":"Forbidden"}} 

Wenn ich die gleiche api Anfrage über „Client-ID für Web-Anwendungen “ (OAuth 2.0 Spielplatz) authentifizieren bekomme ich die api Antwort ohne Probleme. Das Problem liegt also nicht in der API-Abfrage.

Das ist, was ich tat:

  1. i mit einem Konto wich bei der Google API-Konsole hat Zugriff auf die Analytics-Konto

  2. dort habe ich ein Konto neuen Service innerhalb eines angemeldet Projekt weicht hat Zugriff auf die analytics api

  3. mit dem neuesten google-api-php-Client i die Anforderung authentifizierte zum analyti cs api mit diesem Dienstkonto. Die Authentifizierung scheint zu funktionieren, da der Anforderungsheader authorization: Bearer {access_token} enthält. Aber ich bekomme immer ein 403.

Hier ist ein kurzer Code-Schnipsel von dem, was iam Tun:

$client = new apiClient(); 
$client->setAssertionCredentials(new apiAssertionCredentials( 
    '{my_service_account_email}', 
    array('https://www.googleapis.com/auth/analytics.readonly'), 
    '{my_service_account_certificate}' 
)); 
$request = $client->getIo()->authenticatedRequest(new apiHttpRequest('https://www.googleapis.com/analytics/v3/data/ga?{my_query}')); 

was falsch iam tun?

Antwort