La aplicación publicada en Play Store no se puede comunicar con la API de Google Maps y la API de Facebook

Creé una APK firmada con Android Studio, y agregué a la consola de Google Developer y a la consola de Facebook mi huella digital SHA1 y las teclas api relativas en mi aplicación. Todo funciona bien si subo mi aplicación firmada a través de USB, después de instalarla api de mapas y la API de Facebook funciona bien. Si subo la misma aplicación a Play Store, cuando bash iniciar sesión en Facebook, dice “hash de clave no válida. La clave hash blablabla no coincide con ninguna almacenada …”. Entonces, si me conecto sin Facebook, ni siquiera puedo obtener mis mapas de Google; esto me lleva a pensar que el apk cargado en la tienda de juegos cambia su huella digital o algo así. Comprobé todas las cosas en Android Developers y Stackoverflow, pero no puedo hacerlo funcionar, porque lo más extraño es que este apk de lanzamiento firmado funciona bien hasta que lo cargue en Play Store.

Aquí está la respuesta de por qué no puedes ver el mapa de Google.

Recientemente cargué el APK en la tienda de Google Play y me enfrenté al mismo problema después de consultar Play Console. Encontré la solución para este problema.

No hay problema con la clave, pero el problema es con su SHA-1. Has firmado tu APK con tu SHA-1 que está bien y luego subes el APK, también está bien.

Pero según la nueva actualización de Play Console cuando firmó su APK con SHA-1 y subió el APK, solo lo firmó usted, pero según la nueva actualización también está firmado por Google Play para mayor seguridad. Mire aquí parte de la sección de Google Play:

Con Google Play App Signing: firma su aplicación con su clave de carga. Luego, Google verifica y elimina la firma de la clave de carga. Finalmente, Google vuelve a firmar la aplicación con la clave de firma de la aplicación original que proporcionó y entrega su aplicación al usuario.

Puede consultar la documentación aquí.

Ahora, la respuesta a su pregunta es Después de subir con éxito la APK, puede ver que en la sección con dos SHA-1, la primera SHA-1 es creada por Google y la segunda SHA-1 es suya .

Así que solo copie el Google SHA-1 y péguelo en su consola donde genera la clave de la API de Google Map.

Con la inspiración de @Andy Developer, pude mostrar el mapa una vez que mi aplicación se cargó en Google Play. Estos fueron los pasos:

  1. Suba su aplicación a Google Play (archivo APK firmado)
  2. Una vez que la aplicación se haya enviado y aprobado, seleccione su aplicación de Google Play Console
  3. Vaya a Herramientas de desarrollo -> Administración de versiones -> Firma de aplicaciones

Firma de la aplicación en Google Play Console

  1. Copie el primer certificado SHA-1 que Google Play ha emitido después de cargar la aplicación.
  2. Ve a Google Console y selecciona tu proyecto.
  3. Seleccione su clave API, restrinja su clave y pegue el SHA-1 después del nombre del paquete.

Pegar SHA-1 en la consola de Google

  1. Presione Guardar , espere un par de minutos. y tu aplicación debería mostrar Google Maps.

Finalmente lo resolví, probablemente el problema era que el archivo google_maps_api.xml proporcionado por la API no se había cargado en el lanzamiento, así que

me gustó eso:

buildTypes { debug { manifestPlaceholders = [mapsKey: "AIzaSyB8o9KzQ5YN8U8AFS************"] } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' manifestPlaceholders = [mapsKey: "AIzaSyApLacqgkdIR7uEpcf*****************"] } } 

y luego en mi AndroidManifest

  

Referencia: https://stackoverflow.com/a/33917692/3235560

luego registré 2 claves diferentes, cada una con la huella digital sha1 correcta, una depuración y la otra proporcionada por la consola Google Play (no el certificado de carga, pero el otro generado por Google).

Very Very gracias a Zuhad y Andy Developer por su inspiración.

Los tipos de comstackción de depuración y liberación de su aplicación están firmados con dos claves diferentes.

Debe registrar ambas claves en Google Maps y Facebook para que puedan acceder a sus servicios

Sí, es obvio que el mapa no se cargará en APK firmado.

Solución:

Cuando genera la clave de API en la consola API de Google, necesita restringir la clave con la tecla SHA.

Pero después de generar APk firmado, necesita tomar la tecla SHA del modo de lanzamiento y agregar la consola API para la API enter image description here

Adjunté Imagen, miro

Espero eso ayude.

Para que Facebook genere la clave hash use el siguiente código:

 try { PackageInfo info = getPackageManager().getPackageInfo( "YOUR PACKAGE NAME", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (PackageManager.NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

Una vez que reciba el código hash, pegue el mismo en la consola de desarrollador de Facebook y avance

Espero eso ayude:)