2011-12-19 3 views
8

Sto lavorando con alcuni esempi di codice qui:Dove revocare le autorizzazioni dell'API di Google concesse su Android?

http://code.google.com/p/google-api-java-client/source/browse/picasa-android-sample/src/main/java/com/google/api/services/samples/picasa/android/PicasaSample.java?repo=samples

ho autorizzato l'accesso nella mia app Android, ma non riesco a trovare dove revocare l'ora di accesso, in modo da poter correre attraverso di nuovo. La disinstallazione dell'APK non sembra resettare alcuna autorizzazione.

risposta

8

Credo che se vai a https://accounts.google.com/IssuedAuthSubTokens dovrebbe elencare la tua applicazione in "Siti collegati, app e servizi" da lì puoi revocare l'accesso.

+2

Nulla del mio sviluppo Android è elencato lì, solo i siti Web che ho autorizzato. – gdonald

+1

@ gdonald Sto cercando esattamente la stessa risposta a questa domanda. In IssuedAuthSubTokens, inoltre, non vedo la mia app per Android elencata. –

+0

http://stackoverflow.com/questions/6852256/how-do-you-force-accountmanager-to-show-the-access-request-screen-after-a-user –

-5

Cerca nel file AndroidManifest.

1

Non è possibile tramite alcuna API pubblica pubblica.

See:

Anche a disinstallare e reinstallare l'applicazione non aiuta.

questo potrebbe essere il modo in cui su un dispositivo radicata: How do you force AccountManager to show the "Access Request" screen after a user has already allowed access?

1

È necessario revocare il token di programmazione. Innanzitutto, prova l'app di esempio pubblicata su: https://developers.google.com/drive/quickstart-android

Questa app di esempio visualizza la finestra di dialogo per consentire di selezionare un account, quindi scattare una foto e caricarla su Google Drive. Una cosa importante che ho scoperto è che questa app di esempio alla fine fallirà. Ho scoperto che la parte della fotocamera dell'app causa arresti anomali. Quindi, disabilita la parte della telecamera del codice e sostituisci semplicemente il file con un file su una scheda SD e carica il file su Drive.

di revocare l'autorizzazione a utilizzare Drive, è necessario eseguire il seguente codice:

String token = credential.getToken(); 


HttpRequestFactory factory = HTTP_TRANSPORT.createRequestFactory(); 
GoogleUrl url = new GoogleUrl("https://accounts.google.com/o/oauth2/revoke?token=" + token); 
HttpRequest request = factory.buildGetRequest(url); 
HttpResponse response = request.execute(); 

Consultare il codice di esempio su come accedere alla variabile credenziale. Inoltre, è necessario eseguire il codice sopra in un thread che non si trova sul thread principale, altrimenti fallirà.

È inoltre necessario aggiungere le seguenti autorizzazioni. Il codice di esempio non riesce ad indicare queste autorizzazioni e senza di loro l'applicazione andrà in crash:

<uses-permission android:name="android.permission.ACCOUNT_MANAGER" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> 

Se Eclipse lamenta che alcune di queste autorizzazioni vengono concesse solo per il sistema, basta eseguire Clean Progetto e sarà rimuovere l'avviso. Dopo aver fatto ciò, dovresti disinstallare l'app e riavviare il dispositivo. Per ulteriori informazioni sulla revoca token, vedere la sezione "La revoca di un token" a:

https://developers.google.com/accounts/docs/OAuth2WebServer

+0

Grazie, questo metodo funziona correttamente. – tcboy88

0

Utilizzo di Google Play Services:

http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html

Aggiungi https://www.googleapis.com/auth/userinfo.profile alla vostra portata.

Esempio:

String scope="oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile" 

final String token = GoogleAuthUtil.getToken(context, "[email protected]", scope); 

O "forza bruta"

Intent res = new Intent(); 
res.addCategory("account:[email protected]"); 
res.addCategory("scope:oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"); 
res.putExtra("service", "oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"); 
Bundle extra= new Bundle(); 
extra.putString("androidPackageName","com.your.package"); 
res.putExtra("callerExtras",extra); 
res.putExtra("androidPackageName","com.your.package"); 
res.putExtra("authAccount","[email protected]"); 

String mPackage = "com.google.android.gms"; 
String mClass = "com.google.android.gms.auth.TokenActivity"; 
res.setComponent(new ComponentName(mPackage,mClass)); 
startActivityForResult(res,100); 

Ora, quando si revoca l'accesso qui https://accounts.google.com/IssuedAuthSubTokens l'applicazione che si mostra la finestra per il permesso di nuovo nel dispositivo.

2

Due passi per innescare nuovamente la pagina di autorizzazione:

  1. vanno a https://accounts.google.com/IssuedAuthSubTokens di revocare l'applicazione desiderata. Questo cancellerà le autorizzazioni dal lato server.
  2. vai alle impostazioni del dispositivo Android-> Dati e ora: fai avanzare rapidamente il tuo tempo di un giorno o due. Questo costringerà il token corrente a scadere.
+0

Funziona per la mia connessione dell'app con Google Drive. Durante il test, correggo la data alla data di inoltro veloce. Dopo aver clinkato Revoca l'accesso ed eseguendo la pagina di autorizzazione, viene pop-up ogni volta. –

1

Dopo aver lottato t o revoca l'autorizzazione per le autorizzazioni dell'API Gmail concesse sulla mia app Android (ancora in debug), ho capito che appare su https://security.google.com/settings/security/permissions come @David Waters menzioni (è un nuovo collegamento ma va nello stesso posto) ma solo se si Hai abilitato correttamente l'API tramite Google Developers Console. Ciò significa aggiungere correttamente l'ID del client OAuth 2.0, anche se l'app è ancora in sviluppo e in modalità di debug.

C'è un'ottima guida su come aggiungere le credenziali sulla guida Android Quickstart sul sito dell'API di Gmail (passaggi 1 & 2).