2014-06-18 16 views
6

Sto usando Google Play Android Developer API da server a server controlla lo stato di sottoscrizione degli abbonamenti dei nostri utenti ma dopo aver ottenuto l'autorizzazione e richiesto un abbonamento esistente ottengo la risposta 401 con il seguente messaggio 'L'attuale l'utente ha permessi insufficienti per eseguire l'operazione requsted '. Visiting https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=XXXXXX Vedo che ho l'ambito richiesto (https://www.googleapis.com/auth/androidpublisher) ma ottengo sempre la stessa risposta ogni volta. Qualcun altro ha avuto lo stesso problema?API Android per sviluppatori Google Play 401 Permessi insufficienti

Modifica: ho visto che cosa fa l'API Explore, aggiunge la chiave nella stringa di query di una richiesta ma non ho quel valore. Nella console ho creato un ID cliente account di servizio che ha un ID client, un indirizzo email e una chiave privata, ma non esiste una chiave API che apparentemente utilizza API Explorer.

Modifica n. 2: ho aggiunto l'email relativa all'account di servizio sia alla Console per gli sviluppatori di Google Play sia alla console di Google Wallet, ma non ho ancora accesso. Sto usando nodejs e lo google-oauth-jwt perché non c'è la lib di google fornita per nodejs.

Ecco il codice che sto usando per fare una richiesta:

var request = require('google-oauth-jwt').requestWithJWT(); 

function makeReq() { 
    request({ 
     url: 'https://www.googleapis.com/androidpublisher/v1.1/applications/{packageName}/subscriptions/{subscriptionId}/purchases/{purchaseToken}', 
     jwt: { 
      // use the email address of the service account, as seen in the API console 
      email: '[email protected]', 
      // use the PEM file we generated from the downloaded key 
      keyFile: 'purchases-test.pem', 
      // specify the scopes you wish to access 
      scopes: ['https://www.googleapis.com/auth/androidpublisher'] 
     } 
    }, function (err, res, body) { 
     if (err) { 
      console.log(err); 
     } else { 
      console.log("BODY IS ------------------------------------------"); 
      console.log(JSON.parse(body)); 
     } 
    }); 
} 
+0

scorrere verso il basso un po ' cerca "Accesso API pubblico" prova e usa quello – DaImTo

+0

@DaImTo, intendevi usare entrambi l'accesso API pubblica insieme all'account OAuth Service o senza di esso? E, inoltre, ho letto [questo] (https://developers.google.com/accounts/docs/OAuth2ServiceAccount) un paio di volte già e non c'è menzione della chiave da passare all'API quando si effettuano chiamate – Neman

+0

Hai fatto dare l'accesso all'account di servizio all'account di gioco? Nota: so che gli account di servizio hanno poca o nessuna esperienza di gioco Android :) – DaImTo

risposta

1

C'è un indirizzo email associato al tuo account del servizio.

Questo deve disporre di autorizzazioni appropriate sia nella console di sviluppo che nel Play Store. Assicurati di aggiungere l'indirizzo del servizio al Play Store.

Il modo in cui mi sono avvicinato è stato quello di utilizzare

var googleAuth = require('google-oauth-jwt'), 
    authObject = { 
     email: '[email protected]', 
     keyFile: 'purchases-test.pem', 
     scopes: ['https://www.googleapis.com/auth/androidpublisher'] 
    }; 

googleAuth.authenticate(authObject, function (err, token) { 
    next(err, token); 
}); 

devo conservare il token in Redis per un'ora e l'uso che token per rendere la mia richiesta al negozio:

var opts = { 
    url : verifyUrl + payload.packageName + '/inapp/' + payload.productId + '/purchases/' + payload.token, 
    headers: { 
     authorization : 'Bearer ' + token 
    } 
}; 

request.get(opts, function (error, response, body) { 
    next(error, response, body); 
}); 
+0

L'ho fatto e anche dopo un giorno non ho avuto accesso all'API. – Neman

+0

Il cambio è stato automatico per me. Aggiornato per includere il mio processo. Non utilizzo la richiestaWithJWT, utilizzo il modulo npm di richiesta effettiva. –

+0

questo ha funzionato anche per me, dopo aver collegato il mio progetto API nelle impostazioni della console di sviluppo di playstore –

Problemi correlati