android google-maps google-play facebook-login android-keystore

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



google-maps google-play (6)

Creé un APK firmado con Android Studio, y agregué a la consola de Google Developer y a la consola de Facebook mi huella digital SHA1 y las claves de API relativas en mi aplicación. Todo funciona bien si subo mi apk firmado a través de usb, después de instalarlo, los mapas api y facebook api funcionan bien. Si subo el mismo apk a Play Store, cuando intento iniciar sesión con Facebook, dice "hash de clave inválida. La clave hash blablabla no coincide con ninguna almacenada ..". Entonces, si inicio sesión sin Facebook, ni siquiera puedo obtener mis mapas de Google; Esto me lleva a pensar que el apk cargado en Play Store cambia su huella digital o algo así. Revisé todas las cosas en Desarrolladores de Android y Stackoverflow, pero no puedo hacer que funcione, porque lo extraño es que este apk de lanzamiento firmado funciona bien hasta que lo cargue en Play Store.


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

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

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

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

Finalmente lo resolví, el problema era probablemente que el archivo google_maps_api.xml proporcionado por la API no estaba 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

<meta-data android:name="com.google.android.geo.API_KEY" android:value="${mapsKey}" />

Referencia:

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

Muchísimas gracias a Zuhad y Andy Developer por la inspiración.


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

Debe registrar ambas claves en Google Maps y Facebook para que permitan el acceso a sus servicios.


Para que Facebook genere una 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, péguelo en la consola de desarrolladores de Facebook y avance

Espero eso ayude:)


Sí, obviamente el mapa no se cargará en el APK firmado.

Solución:

Cuando genera una clave API en la consola API de Google, debe restringir la clave con la clave SHA

Pero después de generar APk firmado, debe tomar la clave SHA del modo de liberación y agregar la consola API para la API

He adjuntado imagen, mira

Espero eso ayude.


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

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

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

Pero según la nueva actualización de Play Console cuando firmó su APK con SHA-1 y cargó el APK, solo lo firmó usted, pero según la nueva actualización también lo firmó Google Play para mayor seguridad. Echa un vistazo aquí a alguna parte de la sección de Google Play:

Con Google Play App Signing: Firmas tu aplicación con tu 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 cargar con éxito el APK, puede ver que en la sección con Two SHA-1, el primer SHA-1 es Google creó el suyo y el segundo SHA-1 es suyo .

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