Cómo revocar el permiso que mi aplicación recibe del usuario google gmail AccountManager.getAuthToken (

Creé una aplicación de prueba con Eclipse para obtener el authToken de una de mis cuentas de correo electrónico de Google en mi dispositivo.

La ejecución de este me pidió con el diálogo de acceso de permiso donde presionar permitir acceso:

 accountManager.getAuthToken(account,"oauth2:https://www.googleapis.com/auth/userinfo.profile", false, new GetAuthTokenCallback(), null); 

Quise crear un diálogo del selector que trabaje de API8 y arriba donde el usuario puede elegir qué cuenta de google él me permite tener acceso. Para hacer esto tengo que revocar el permiso para ver la pantalla de nuevo.

¿Debo ver mi aplicación de prueba en esta página o no?
Acceso autorizado a su cuenta de Google

Tengo la búsqueda de una manera de revocar el permiso y no está trabajando.
Lo único que funciona es crear un nuevo proyecto de aplicación.

ACTUALIZAR 2013
Uso del servicio GCM de Google Play y esto funciona bien

En cuanto a la página " Acceso autorizado a su cuenta de Google ", no verá su aplicación allí ya que este permiso es un permiso local de dispositivo almacenado en una base de datos en el teléfono.

No parece que sea posible revocar este permiso de una manera fácil. He podido encontrar un par de maneras de poder activar el diálogo de nuevo, pero ninguno es ideal. En algunas de estas soluciones no es exactamente el mismo cuadro de diálogo que se muestra, pero puede ser lo suficientemente cerca para fines de prueba en función de lo que desea hacer:

  • Realice un restablecimiento de fábrica del teléfono.
  • Cree una nueva aplicación de prueba mínima y configure ambas aplicaciones para compartir el mismo UID . Esto significa que a ambas aplicaciones se les concederán los mismos permisos y se volverá a mostrar el diálogo para permitir al usuario permitir el acceso a la segunda aplicación.
  • Añada un ámbito adicional al tipo de token (por ejemplo, cambie oauth2: https://www.googleapis.com/auth/userinfo.profile a oauth2: https://www.googleapis.com/auth/userinfo.profile https: // http://Www.googleapis.com/auth/userinfo.email ). Puesto que usted está pidiendo permisos adicionales, el diálogo se mostrará nuevamente.
  • Dado que tiene acceso root a su teléfono, elimine la tabla que grants de la base de datos /data/system/accounts.db, donde se almacenan los permisos concedidos, tal como se explica en Cómo obligar a AccountManager a mostrar la pantalla "Solicitud de acceso" después de un Usuario ya ha permitido el acceso?

Internamente, el método getAuthToken realiza un seguimiento de si el acceso se ha concedido o no utilizando el UID de la aplicación. Así que si usted es capaz de forzar de alguna manera a Android para dar a su aplicación un nuevo UID o para obligar a limpiar la base de datos de las subvenciones dado el diálogo se debe mostrar de nuevo. Estas son algunas soluciones que otros dicen que funcionan para ellos, pero que no funciona para mí (tal vez depende del teléfono que utiliza?):

  • Desinstale la aplicación y reinicie el dispositivo (como usted dice)
  • Quitar y volver a agregar la cuenta de google (mencionada en el permiso de la cuenta de revocación para una aplicación )
  • Firmar la aplicación con un certificado diferente (también mencionado en el permiso de la cuenta de revocación para una aplicación )

Como nota secundaria como revocar los permisos para acceder a tokens de autenticación de Google, menciona que hay métodos internos de Android para revocar el acceso, pero estos no son accesibles a través de la API pública.

Hay dos casos que usted debe considerar:

  1. Autorización de servidor
  2. Administrador de cuentas de Android (lado del dispositivo) Autorización

Caso 1: La revocación del servidor de las Cuentas de Google se puede realizar en: https://accounts.google.com/IssuedAuthSubTokens

Sólo tienes que iniciar sesión con la cuenta de Google correspondiente y elegir revocar la aplicación / sitio web.

Caso 2: Si en su dispositivo Android se le presenta una pantalla que dice algo así como: "La aplicación desea acceder a su cuenta de Google …. Permitir / denegar?", Se trata de una autorización de tipo Account Manager donde necesita modificar el sqlite3 Base de datos en su teléfono con el fin de revocar la aplicación (no tan trivial como el caso 1 y esto requiere la raíz accedida a su teléfono):

yo. Primero copie la base de datos y el archivo de diario (accounts.db y accounts.db-journal) a otra ubicación (por ejemplo: en su tarjeta SD o en una computadora). Los archivos de base de datos se pueden encontrar en este directorio en su dispositivo android:

 /data/system/users/0/accounts.db /data/system/users/0/accounts.db-journal 

Ii. Ahora necesitas un editor sqlite3. Utilicé el Depurador de Sqlite de Google Play Store. Alternativamente, puede utilizar un binario sqlite3 de http://www.sqlite.org/download.html y hacer esto en un equipo.

Iii. Usted sabe necesidad de utilizar el editor para eliminar ciertas entradas en la tabla "extras" de la base de datos accounts.db. Es posible que desee tomar un rápido tutorial sobre comandos sqlite, pero aquí hay algunos ejemplos y "Sqlite Debugger" hace que esto sea fácil de aprender:

Primero abra el archivo accounts.db en el editor

Para listar todas las filas en la tabla "extras" se puede utilizar el siguiente comando:

 SELECT * from extras 

Una mejor idea sería listar sólo filas en la tabla "extras" que corresponden a la aplicación que desea revocar. Por ejemplo, si "com.someapp" es el nombre de tu aplicación, puedes usar el siguiente comando:

 SELECT * from extras WHERE key like '%com.someapp%' 

Debería obtener un resultado similar al siguiente:

 id|accountsid|key|value 10|1|perm.xxxxxxxxxxxxxxxxxxxxxxxxxxx.oauth2:https://google.com/|1 11|1|EXP:xxxxxxxxxxxxxxxxxxxxxxxxxxxx.oauth2:https://google.com/|xxxxxxx 

Anote los números de identificación que desea eliminar de la salida anterior (es decir, las filas correspondientes a la aplicación que desea revocar) y, a continuación, utilice los siguientes comandos para eliminar esas filas:

 DELETE from extras where _id = 10 DELETE from extras where _id = 11 

Copie la base de datos y el archivo de diario en su ubicación original. Asegúrese de establecer los permisos y la propiedad de nuevo en el original. Lectura / escritura para el propietario y el grupo solamente y propietarios y propietarios de grupos son ambos "sistema". ¡Esta operación requerirá acceso root!

Reinicie el dispositivo y debería haber revocado el permiso para la aplicación. Puede probar esto pidiendo a la aplicación que solicite autorización nuevamente. Si se le presenta la pantalla que le pide que autorice la aplicación ("La aplicación desea acceder a su cuenta de Google …. Permitir / denegar?), Entonces ha revocado la aplicación con éxito.

Referencias:

  1. https://groups.google.com/forum/#!topic/android-developers/3lQb83jeyE8
  2. https://github.com/jberkel/sms-backup-plus/issues/369

La respuesta fue la desinstalación y el reinicio del dispositivo.
Tuve que darle algún tiempo antes de reiniciar.

Actualización … Tengo que decir que esto sólo funciona a veces.

  • LinkedIn scribe OAuth biblioteca no puede permitir el acceso a la cuenta de LinkedIn
  • Android AccountManager authToken y OAuth
  • Woocommerce rest api OAuth autenticación en android
  • ¿Por qué no puedo crear varios ID de cliente de OAuth 2.0 para el mismo nombre de paquete?
  • ¿Cómo puedo ver la lista de aplicaciones y los detalles de la aplicación de Google Play con algunas API?
  • Autenticar usuario registrado con FB en mi servidor usando el Administrador de cuentas de Android
  • ¿Cómo uso OAuth 2.0 para enviar Gmail desde Indy?
  • ¿Existe ya una biblioteca OAuth2 para Java / Android?
  • Inicia sesión de Google en la aplicación de Android para consumir Cloud Endpoints backend
  • Uso de OAuth con Scribe en Android
  • Cómo usar la API de inicio de sesión de Google con Cordova / Phonegap
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.