Pantalla de Acceso de Acceso a Autenticador Personalizado de Android
Cuando inicia sesión a través del autenticador de Google, la pantalla Permitir acceso (GrantPermissionActivity) es rápida una vez por cuenta por aplicación (uid), sin embargo, no está documentada donde se puede optar por que aparezca esa pantalla para autentificadores de terceros personalizados.
Alguien sabe si hay de todos modos para hacer esto?
- Eliminar mi aplicación de android account manager "add account"
- Cómo ocultar mi Administrador de Acount personalizado desde la interfaz de usuario de configuración
- Accountmanager vs sharedpreference para la autenticación y la comunicación con el servidor
- SampleSyncAdapter que almacena la contraseña de texto sin formato?
- Los contactos de Android no muestran mi tipo de cuenta personalizado
Intenté insertar un cheque personalizado e imitar el GrantPermissionActivity, pero el problema es que AuthToken está en caché, así que no pude averiguar cómo aplicar esto en aplicaciones de terceros como el getAuthToken simplemente pasará los códigos personalizados con el token en caché.
Tenga en cuenta que este no es el mismo problema que: ¿Cómo obligar a AccountManager a mostrar la pantalla "Solicitud de acceso" después de que un usuario ya haya permitido el acceso?
- Android AccountManager authToken y OAuth
- Cómo eliminar la cuenta en AccountManager en Android
- Flujo de aplicaciones con AccountManager
- Autenticador de cuentas personalizadas. Limpieza después de que la cuenta se haya eliminado del dispositivo
- Añadir cuenta en AccountManager puede provocar un bloqueo
- ¿Qué funciones son compatibles con el autenticador de cuentas de Google para Android?
- Manejo de inicio de sesión y recuerda conmigo con AccountManager
- Android AccountManager: peekAuthToken
Creo que he descubierto una muy buena solución, pero esto no es probablemente la forma en que funciona la pantalla de Google Permitir.
En el Authenticator, obtiene el paquete de llamadas, que no se puede falsificar ya que AccountManager verifica el UID / PID de la aplicación. Utiliza el paquete de llamadas como parte del tipo de token, así como la fecha de instalación de la aplicación (opcional, se encuentra utilizando el gestor de paquetes), de esta manera el token de cada aplicación se almacenará en caché por separado.
Si el tipo de token no contiene el nombre del paquete como paquete de llamada, no se devolverá ningún token.
Para cada tipo de token de autenticación, también verifica un secreto de cliente con respecto a la clave del cliente. A continuación, sólo devolverá la intención de la pantalla Permitir acceso si ésta es la primera vez que el cliente solicita la clave por cuenta por tipo de cuenta personalizada.
Tenga en cuenta que si desea una aplicación de lista blanca, también puede hacerlo en una base de tipo de token de cuenta.
No tengo una respuesta completa para ti, pero tal vez pueda ayudarte un poco en tu camino.
Al observar la implementación de getAuthToken , puede ver que el permiso se otorga automáticamente si el autenticador está usando customTokens . La documentación de AuthenticationDescription también menciona que "Authenticator maneja su propia caché de token y pantalla de permisos" si se usan tokens personalizados. Así que si este es el caso para usted, no creo que sea posible hacer que aparezca esta pantalla.
Intenté insertar un cheque personalizado y imitar el GrantPermissionActivity, pero el problema es que AuthToken está en caché …
Si invalida el token con invalidateAuthToken , debe borrarse de la caché. Sólo recuerde pasar el token que desea invalidar al método (consulte AccountManager: invalidateAuthToken no invalida el token ).