El problema está resuelto. El exploit ha sido cerrado.
Cerraremos este error debido a que se inició sesión en una versión preliminar de Android. Si el problema sigue siendo relevante y reproducible en la última versión pública (Android Q), capture un informe de error y registre el error en https://source.android.com/setup/contribute/report-bugs . Si no se recibe una respuesta dentro de los próximos 14 días, este problema se cerrará. Gracias por su comprensión.
Última actualización:
Este es un error y Google lo solucionará en la próxima actualización.
Aplazamos este problema para su consideración en una versión futura. Gracias por tu tiempo para mejorar Android
Esta respuesta se ha convertido en un conglomerado de ideas y se ha editado para incluir información de la discusión en los comentarios.
La androidmarket
API sería una API personalizada escrita por el desarrollador. No está disponible para el público.
Para abordar sus inquietudes en los comentarios. El desarrollador habría utilizado las apis actuales disponibles a través de Android Developer y Google para crear un proyecto que gestione todos estos.
En cuanto al acceso Full Account Access
, no estoy seguro de cómo estos desarrolladores lo han logrado.
Recomendaría usar AccountManager , que es parte de android.accounts, tiene acceso a credenciales y un método getUserData . El administrador de cuentas tiene acceso a contraseñas y es capaz de crear y eliminar cuentas. Esto, posiblemente utilizado con el proveedor de contenido
Consulte Autenticación de Udinic / SyncAdapter .
Para responder a su comentario:
Este blog debería ayudarlo a comenzar. Escriba su propio autenticador de Android .
Cómo funcionan realmente estas aplicaciones, no puedo decirte. También pueden tener diferentes implementaciones (a menos que sean un esfuerzo de colaboración entre bastidores, seguramente serán diferentes).
Una conjetura. En primer lugar, utilice GoogleSignInAccount con com.google.android.gms.auth.api.signin .
Existe una definición de alcance , para determinar el alcance de los permisos que se otorga a la aplicación.
Usando requestScopes () , el
PERFIL de cadena final estática pública
... / Permite que su aplicación web acceda a instalaciones de aplicaciones de Android inalámbricas.
Por ejemplo :
GoogleSignInOptions gso =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail().
.requestScopes(new Scope("https://www.googleapis.com/auth/contacts.readonly"))
.build();
Si se puede obtener acceso completo, se puede encontrar una lista de todas las aplicaciones utilizadas por el titular de la cuenta y compararlas con las del dispositivo.
El Administrador de paquetes recuperará una lista de todas las aplicaciones instaladas actualmente en el dispositivo.
PackageInfo proporciona los detalles sobre la aplicación.
INSTALL_REASON_USER también filtrará las aplicaciones que el usuario haya instalado activamente.
Es posible que desee consultar com.google.firebase.appindexing y registrar acciones de usuario . Se pueden rastrear diferentes acciones .
El historial de la cuenta de los usuarios se encuentra en https://myactivity.google.com/myactivity .
Un vínculo útil es OAuth 2.0 Playground .
Este repositorio de github node-google-play , que usa node, está actualizado y llamará a las API de Google Play. Al igual que el archivo que se usó como una API "no oficial", android-market-api , para consultar el mercado.
Aplicación 1
La aplicación afirma utilizar los siguientes permisos:
La versión 2.1.8 puede acceder a:
$ Compras en la aplicación
Otro
- recibir datos de Internet
- ver conexiones de red
- acceso completo a la red
- usar cuentas en el dispositivo
- evitar que el dispositivo duerma
- leer la configuración del servicio de Google
Cabe destacar que la aplicación no establece ningún permiso cuando hubo una instalación básica. No pude usar ninguna de las funciones porque no tengo aplicaciones pagas. Entonces, para la búsqueda inicial, no se necesitaban permisos, lo que indicaría que la aplicación no tenía acceso a mi cuenta.
Revisé los permisos, no había ninguno establecido. Entonces, lo único que se requería era aceptar la ventana emergente, como se muestra en su pregunta.
Aplicación 2
La otra aplicación a la que hace referencia que hace lo mismo es más directa sobre a qué se accede.
Mis aplicaciones pagas
AVISO DE SEGURIDAD / PRIVACIDAD
La primera vez que ejecute esta aplicación, le pedirá permiso completo para su cuenta de Google. Desafortunadamente, esta es la única forma de acceder a la información requerida. No se almacena información personal, no se comparte información sobre sus aplicaciones con el desarrollador de esta aplicación, ni se comparte con terceros. Todo se guarda solo en su teléfono.
He entrado en detalles sobre estas aplicaciones en esta publicación de blog , que fue para un proyecto final de la universidad (sin ganancia monetaria). Me inclino a pensar que esto es un exploit en la API y no un estado por diseño de Google, ya que no hay llamadas a la API para buscar compras de aplicaciones que no sean la propia aplicación del desarrollador. Supongo que es un exploit de día cero, en cuyo caso no hay una forma legítima de acceder a esta información.