2014-06-20 6 views
9

Ho provato tante cose negli ultimi giorni, ma ora io sono a corto di idee :(utilizzare il servizio Google account per verificare InAppPurchase

voglio verificare un inAppPurchase che è stato fatto nella mia app Android.

1) Ho creato un nuovo account di servizio nella console API di Google.

1 bis) L'account di servizio sia elencato i permessi unter e ha "può visualizzare" il permesso

2) Sto utilizzando la versione più recente di https://github.com/google/google-api-php-client

3) frammento di codice dal mio script PHP:

$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) risposta da Google:

GET https://www.googleapis.com/androidpublisher/v1.1/applications/de.test.myapp/inapp/de.test.inapp.google.balance5eur/purchases/[PURCHASETOKEN]: (401) L'utente corrente dispone di autorizzazioni insufficienti per eseguire l'operazione richiesta .

[PURCHASETOKEN] è il segno di acquisto che ho ricevuto da google

5) Impostazione $ cred-> sub = '[email protected]' al mio indirizzo di posta elettronica porta in primo piano

errore aggiornamento del token OAuth2, messaggio: '{"errore": "unuthorized_client", "error_description": "Client non autorizzato o ambito nella richiesta". } '

risposta

29

Ok ho trovato la soluzione!

È necessario connettere l'API alla propria app. Devi andare alla tua pagina di pubblicazione di Google Play (https://play.google.com/apps/publish) e invitare un utente con l'email dell'account di servizio in Impostazioni-> Account utente & diritti-> Invitare un nuovo utente e assegnare i privilegi di "Visualizza report finanziari".

Ciò significa che, mentre in genere è possibile vedere un numero di utenti dal proprio dominio elencato in Google Play Console (Email: [email protected], Ruolo: Finanza; Email: [email protected], Ruolo: amministratore), ora aggiungerai un altro utente e gli assegnerai un ruolo finanziario (Email: [email protected], Role: Finance).

Grazie funziona per me, buona fortuna!

+2

Mi hai salvato la giornata! Grazie mille! Perché questo non è documentato nella documentazione di Google? – glutorange

+0

Fantastico, grazie! Mi hai appena salvato da un grande mal di testa ... – Mike

+0

Purtroppo questo non risolve il problema per me. Stessa risposta all'errore. Che cosa significa "connetti la tua API con la tua app"? È questo l'aggiunta dell'email dell'account di servizio? –

-1

Penso che sia necessario utilizzare il client Web OAuth 2.0.

+0

Questo dovrebbe essere un commento – NSNoob

+0

dovrebbe essere un commento. –