2014-06-20 20 views
9

Ich habe versucht, so viele Dinge in den letzten Tagen zu überprüfen, aber jetzt bin ich Ideen aus :(Verwenden Dienstkonto Google InAppPurchase

Ich möchte eine inAppPurchase überprüfen, die in meiner android app gemacht wurde.

1) Ich habe ein neues Dienstkonto in der Google API-Konsole erstellt.

1a) Das Dienstkonto wird unter Berechtigungen aufgeführt und hat "können sehen" Erlaubnis

2) Ich verwende die aktuellste Version von https://github.com/google/google-api-php-client

3) Code-Schnipsel aus meinem PHP-Skript:

$client = new Google_Client(); 
$client->setApplicationName('myAppName'); 
$client->setClientId('123456789123-vxoasdt8qwe6awerc9ysdfmjysdfysf64werweria8fh.apps.googleusercontent.com'); 
$key = file_get_contents('/shr/data/stor/b516cexx3123asdf3988345d8133e7f86bfas2553-privatekey.p12'); 
$service_account_name = '[email protected]per.gserviceaccount.com'; 

$client->setScopes(array('https://www.googleapis.com/auth/androidpublisher')); 
$cred = new Google_Auth_AssertionCredentials($service_account_name, array('https://www.googleapis.com/auth/androidpublisher'), $key); 
$client->setAssertionCredentials($cred); 

try { 
    $service = new Google_Service_AndroidPublisher($client); 
    $googleApiResult = $service->inapppurchases->get($externalAppId, $externalProductId, $purchaseToken); 
} catch (Exception $e) { 
    var_dump($e->getMessage()); 
} 

4) Antwort von Google:

GET: (401) Der aktuelle Benutzer verfügt nicht über ausreichende Berechtigungen zum Ausführen der angeforderten -Operation.

[PURCHASETOKEN] ist der Kauf Token ich von Google

erhielt

5) einstellen $ glaub> sub = '[email protected]' auf meine Mail-Adresse bringt

Fehler Aktualisieren des OAuth2-Tokens, Nachricht: '{"error": "unauthorized_client", "error_description": "Nicht autorisierter Client oder Bereich in Anforderung." } '

Antwort

29

Ok ich fand die Lösung!

Sie müssen Ihre API mit Ihrer App verbinden. Sie müssen auf Ihre Google Play-Veröffentlichungsseite (https://play.google.com/apps/publish) gehen und einen Benutzer mit der E-Mail-Adresse des Dienstkontos unter Einstellungen-> Benutzerkonto & Rechte-> Neuen Benutzer einladen einladen und ihm die Berechtigung "Finanzberichte anzeigen" zuweisen.

Dies bedeutet, dass normalerweise eine Reihe von Nutzern Ihrer Domain in der Google Play Console aufgeführt wird (E-Mail: [email protected], Rolle: Finanzen; E-Mail: [email protected], Rolle: Administrator), fügen Sie nun einen weiteren Benutzer hinzu und geben ihm eine Finanzrolle (Email: [email protected], Rolle: Finanzen).

Danke funktioniert für mich, viel Glück!

+2

Sie haben meinen Tag gerettet! Vielen Dank! Warum ist dies in der Google-Dokumentation nicht dokumentiert? – glutorange

+0

Super, danke! Du hast mich gerade vor großen Kopfschmerzen gerettet ... – Mike

+0

Leider löst das nicht das Problem für mich. Gleiche Fehlerreaktion. Was bedeutet "deine API mit deiner App verbinden"? Wird die E-Mail des Dienstkontos hinzugefügt? –

-1

Ich denke, Sie müssen OAuth 2.0 Webclient verwenden.

+0

Dies sollte ein Kommentar sein – NSNoob

+0

sollte ein Kommentar sein. –