Sto sviluppando un'applicazione Android e ho bisogno di ottenere le informazioni "me" da google, ma finisco sempre in entrambe le risposte codice 401 o 403. Cosa sto facendo male? Ecco il mio codice:Come chiamare https://www.googleapis.com/plus/v1/people/me su google
private static final String GOOGLE_AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/plus.me";
ottengo il token OAuth da (nota ... codice qui sotto è accorciata):
Account googleAccount = (AccountManager) getSystemService(ACCOUNT_SERVICE).getAccountsByType("com.google")[0];
final Bundle bundle = manager.getAuthToken(googleAccount, GOOGLE_AUTH_TOKEN_TYPE, true, null, null).getResult();
String authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN);
Fin qui tutto bene ... ora ho una pedina così tutto sembra a posto qui
ora ottenere informazioni di me:
String GOOGLE_ME_URL = "https://www.googleapis.com/plus/v1/people/me";
final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet request = new HttpGet(GOOGLE_ME_URL);
request.addHeader("Authorization", "OAuth=" + authToken);
final HttpResponse response = client.execute(request);
Questo dà codice di risposta 401.
Ho anche provato:
final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet request = new HttpGet(GOOGLE_ME_URL + "?access_token=" + authToken);
final HttpResponse response = client.execute(request);
Questo dà codice di risposta 403 - Qualcosa come "Limite giornaliero superato. Registrati per favore ".
Cosa sto sbagliando? cosa ho perso? Come dovrebbe essere fatto?
Grazie
// modifiche sotto Alcuni ulteriori indagini: ho aggiunto un progetto in code.google.com/apis/console e ha preso la chiave generata da lì e messo in l'url, come: https://www.googleapis.com/plus/v1/people/me?key=my_generated_key&access_token= "+ authToken. Ora la chiamata funziona bene e ottengo una risposta 200 con le informazioni corrette, ma non voglio usare questo metodo se non devo e secondo google non dovrei aver bisogno di" • Se la richiesta richiede un'autorizzazione (come una richiesta per i dati privati di una persona), deve includere un token OAuth 2.0. Essa può anche includere la chiave API, ma non è necessario." - da developers.google.com/+/api/oauth
Un'altra cosa:. Se provo un altro URL come 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=' + authToken funziona benissimo
Ciao e grazie per il vostro aiuto. Vuoi dire che non posso usare DefaultHttpClient e HttpGet? Puoi pubblicare come dovrei farlo invece? – user1140596
Altre chiamate https come h t t p s: // w w w.googleapis.com/oauth2/v1/tokeninfo?access_token=my_authToken funziona correttamente con lo stesso codice. Vedi la mia modifica nel post principale – user1140596
Sì, mi dispiace potresti avere ragione. Mi sono imbattuto in un problema di certificato qualche tempo fa ed è stata una vera seccatura. Ho dovuto fare alcune cose per farlo funzionare, ma ora vedo che il tuo problema è un altro. Per i record, ecco una sorta di cosa dovevo fare: http://stackoverflow.com/questions/2012497/accepting-a-certificate-for-https-on-android – Scalarr