2011-12-19 16 views
8

Estoy trabajando con un código de ejemplo aquí:¿Dónde revocar los permisos de Google API otorgados en 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

que autorizó el acceso en mi aplicación para Android, pero no puedo encontrar dónde ahora revocar el acceso, por lo que se puede ejecutar a través de él de nuevo. Desinstalar el APK no parece restablecer ningún permiso.

Respuesta

8

Creo que si va al https://accounts.google.com/IssuedAuthSubTokens debe enumerar su aplicación en "Sitios, aplicaciones y servicios conectados", desde allí puede revocar el acceso.

+2

Nada de mi desarrollo de Android figura en la lista, solo sitios web que he autorizado. – gdonald

+1

@gdonald Estoy buscando exactamente la misma respuesta a esa pregunta. En IssuedAuthSubTokens, tampoco veo mi aplicación de Android en la lista. –

+0

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

-5

Busque en su archivo AndroidManifest.

1
1

Es necesario revocar el token mediante programación. Primero, pruebe la aplicación de ejemplo publicada en: https://developers.google.com/drive/quickstart-android

Esta aplicación de ejemplo muestra el cuadro de diálogo para permitirle elegir una cuenta, luego toma una foto y luego la carga en Google Drive. Una cosa importante que descubrí es que esta aplicación de muestra eventualmente fallará. Descubrí que la parte de la cámara de la aplicación causa bloqueos. Por lo tanto, deshabilite la parte de la cámara del código y simplemente reemplace el archivo con algún archivo en una tarjeta SD y cargue el archivo en Drive.

de revocar el permiso para utilizar Drive, es necesario ejecutar el siguiente código:

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(); 

Consulte el código de ejemplo sobre cómo acceder a la variable de credenciales. Además, debe ejecutar el código anterior en un hilo que no está en el hilo principal o fallará.

También debe agregar los siguientes permisos. El código de ejemplo no indica estos permisos y sin ellos la aplicación se bloqueará:

<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" /> 

Si Eclipse se queja de que algunos de esos permisos sólo se conceden al sistema, basta con ejecutar Proyecto Limpiar y se eliminará la advertencia. Después de haber hecho esto, debe desinstalar la aplicación y reiniciar el dispositivo. Para obtener más información acerca de la revocación de tokens, consulte la sección "La revocación de una emergencia" en:

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

+0

Gracias, este método funciona bien. – tcboy88

0

El uso de servicios de Google Play:

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

Añadir https://www.googleapis.com/auth/userinfo.profile a su alcance.

Ejemplo:

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 "fuerza 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); 

Ahora, cuando se revoca el acceso aquí https://accounts.google.com/IssuedAuthSubTokens la aplicación que muestra la ventana de autorización de nuevo en el dispositivo.

2

dos pasos para desencadenar la página de autorización de nuevo:

  1. van a https://accounts.google.com/IssuedAuthSubTokens revocar la aplicación que desea. Esto borrará los permisos del lado del servidor.
  2. ve a la configuración de tu dispositivo Android-> Datos y tiempo: adelanta tu tiempo en uno o dos días. Esto forzará que el token actual expire.
+0

Esto funciona para la conexión de mi aplicación con Google Drive. Mientras estoy probando, arreglo la fecha en la fecha de avance rápido. Después de tintinear Revoca el acceso y ejecuta la página de autorización, aparece cada vez. –

1

Después de luchar t o revocar la autorización para los permisos API de Gmail otorgados en mi aplicación de Android (aún en depuración), me di cuenta de que sí aparece en https://security.google.com/settings/security/permissions como menciona @David Waters (es un nuevo enlace pero va al mismo lugar) pero solo si Ha habilitado correctamente la API a través del Google Developers Console. Esto significa agregar correctamente su ID de cliente OAuth 2.0, incluso si la aplicación todavía está en desarrollo y en modo de depuración.

Hay una muy buena guía sobre cómo agregar sus credenciales en la guía Android Quickstart en el sitio API de Gmail (Pasos 1 & 2).

Cuestiones relacionadas