La huella digital de firma que especificó ya está siendo utilizada por otro cliente de Android OAuth2

Hace algún tiempo, creé un proyecto de ejemplo (vamos a llamarlo “proyecto de ejemplo”) con el Oauth2 client id para aplicaciones de Android en la consola de las API de Google. También agregué la SHA1 fingerprint y el nombre del paquete (por ejemplo, com.package.name).

Mi error fue que ya existía una aplicación con el mismo nombre de paquete. Ahora necesito crear una Oauth2 client id para la aplicación de Android en el “proyecto válido” con el nombre del paquete com.package.name y con la SHA1 fingerprint que agregué antes. Obviamente, cuando traté de agregar esta huella digital, recibí un error.

 The signing fingerprint you specified is already used by another Android OAuth2 client. 

Después de eso, recordé sobre “proyecto de ejemplo” y eliminé client id del client id de este proyecto. El problema es que todavía no puedo agregar esta huella digital para el nombre del paquete com.package.name . Client id se borró, pero igual tengo el mismo error que el anterior.

Entonces, ¿tengo la posibilidad de usar esta huella dactilar para el mismo nombre de paquete en otro proyecto?

Este error se produce cuando existe una SIGNING CERTIFICATE FINGERPRINT (SHA1) en Google Developers vinculada a una cuenta diferente.

La solución es eliminar el proyecto que está utilizando ese SHA1 en console.developers.google.com para el proyecto anterior / incorrecto.

No puede cambiar la huella digital SHA1 una vez que está configurada. Recuerde que eliminar el proyecto lleva 7 días para eliminarlo por completo.

Otra opción es eliminar el debug.keystore y generar uno nuevo con:

 keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000 

Recuerde que debe desinstalar la aplicación; de lo contrario, recibirá el error [INSTALL_FAILED_UPDATE_INCOMPATIBLE] .

Si está utilizando cada proyecto de base de fuego para cada env como soy, el siguiente enfoque podría ser útil.

En tu build gradle, crea una nueva ID de aplicación para cada env:

 productFlavors { dev { applicationId "se.abc.dev" } stag { applicationId "se.abc.stag" } prod } 

En cada proyecto de firebase, agregue un nuevo proyecto con la identificación de la aplicación correspondiente con la misma huella dactilar. Recuerde descargar el nuevo archivo json del servicio google desde que se modificó el ID de la aplicación. El nombre del paquete sigue siendo el mismo, por lo que no sería un problema al cargar en google play. Pero de seguro, dejo vacío el sabor de los productos, por lo que el nombre del paquete y la identificación de la aplicación serán los mismos para la versión de producto para evitar problemas.

Como alguien podría querer usar la misma aplicación a través de dos o más proyectos de base de fuego por muchas razones, así que obtenga este error. Aquí abordo este escenario en particular. La mejor manera de ejecutar la misma aplicación en dos o más proyectos diferentes de Firebase (digamos producción y puesta en escena) es agregar a su archivo build.gradle nivel de módulo una variante de comstackción (digamos staging) como esta:

 apply plugin: 'com.android.application' apply plugin: 'com.google.firebase.firebase-perf' android { compileSdkVersion 27 buildToolsVersion "27.0.3" defaultConfig { applicationId "com.mydomain.myapp" minSdkVersion 19 targetSdkVersion 27 versionCode 18 versionName "2.8" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } staging { initWith debug applicationIdSuffix ".staging" versionNameSuffix = "-staging" } } } dependencies { [...] } // Firebase apply plugin: 'com.google.gms.google-services' 

En la staging variante de construcción, lo más importante es la línea:

 applicationIdSuffix ".staging" 

Esto inyectará en el tiempo de comstackción un sufijo “stage” a su ID de aplicación para que tenga automáticamente

 applicationId "com.mydomain.myapp.staging" 

"com.mydomain.myapp.staging" agregar esta aplicación ( "com.mydomain.myapp.staging" ) a su proyecto de transición de base de datos y, por lo tanto, podrá agregar el mismo SHA1 "com.mydomain.myapp" a esta aplicación, ya que tiene una diferente ID de aplicación.

Se metió en este tema hoy. Como el proyecto tarda mucho tiempo en eliminarse por completo, la forma más fácil es crear un nuevo SHA1 simplemente eliminando el depurador.keystore local. Se genera automáticamente cuando ejecuta cualquier aplicación después de eliminarla. Esto está documentado en los documentos de Android aquí .

Notaré que si tu aplicación aparece en Play Store, probablemente no quieras cambiar el nombre del paquete y probablemente no quieras reemplazar la clave de producción (ya que te verás obligado a crear una nueva listado).

Si está absolutamente seguro de que actualmente no hay proyectos activos que hagan uso del par de nombre de paquete / huella dactilar actual, una última cosa para intentar: crear una credencial completamente nueva. Tendrá que reemplazar su archivo de credenciales en la aplicación.

No esperaba que esto ayudara, pero lo hizo. Tal vez Google está de alguna manera almacenando en caché la búsqueda? “Esta búsqueda de packagename / fingerprint / clientID es un duplicado, así que no se moleste en buscarla nuevamente”.