La clave de la aplicación de Android no coincide con ninguna hash de clave almacenada

Tengo una aplicación en producción en Play Store que utiliza un inicio de sesión con el SDK de Facebook. Cuando depuro la aplicación de Eclipse no hay ningún problema, pero cuando su producción en la que me da el siguiente error después de Facebook me pide los permisos. He añadido en la página de mi aplicación en developers.facebook.com el hash de claves generado con keytool utilizando este comando:

Keytool -exportcert -alias diego -keystore "C: \ Usuarios \ Diego \ Escritorio \ CeluChat.KeyStore" | "C: \ openssl \ bin \ openssl.exe" sha1 -binary | "C: \ openssl \ bin \ openssl.exe" base64

CeluChat.KeyStore es el almacén de claves que usé cuando exporté la aplicación firmada, y cuando keytool me prometía la contraseña, ingresé la misma cuando exporté.

Pero el error que me da en la producción (descargado desde Play Store) es:

10-20 22: 21: 10.752: W / fb4a (:): BlueServiceQueue (5872): com.facebook.http.protocol.ApiException: El hash de clave VQ3XhZb5_tBH9oGe2WW32DDdNS0 no coincide con ningún hash de clave almacenada.

El hash de clave que se encuentra en la excepción es diferente del hash de clave generado con keytool. De todos modos he añadido el Key Hash en Facebook, pero todavía no funciona.

Facebook alguna manera reemplaza +, – y / con _

Así que intenta reemplazar _ con +, – y / y agrega esa clave hash.

Esperemos que funcione.

Utilicé esto para mostrar la clave cuando ejecuté mi aplicación. En mi caso, estaba recibiendo el hash de clave incorrecto del comando keytool. Tenga en cuenta que si introduce la contraseña incorrecta (a propósito), en lugar de recibir un error se genera una clave incorrecta. Use esto para obtener el hash correcto y ver si coincide con el del registro de errores

try { PackageInfo info = getPackageManager().getPackageInfo("com.package.mypackage", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT); Log.e("MY KEY HASH:", sign); Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show(); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

Además, si por alguna razón el método anterior no funciona. Intente usar este APK para generar el hash de clave correcto. Recuerde que tiene que firmar con cualquier certificado que está intentando recuperar (depurar o liberar). Instálelo en su dispositivo de prueba y ejecútelo.

http://www.easyfacebookandroidsdk.com/download/keyhash.zip

Acabo de descubrir un error con la página de entrada de la clave de la aplicación de ejemplo: Si pega una clave de hash desde la aplicación sin pulsar Intro y, a continuación, haga clic en el botón "Guardar cambios", el código recién ingresado desaparecerá pero la página mostrará un " ! " Respuesta. Esto no es cierto: no salvó. Debe pulsar la tecla Intro después de pegar la tecla de hash y luego pulsar "Guardar cambios".

He guardado una clave incluyendo el carácter de arrastre =. Eso funciono.

Simple poner la clave de hash de mensaje de error devuelto:

 10-20 22:21:10.752: W/fb4a(:):BlueServiceQueue(5872): com.facebook.http.protocol.ApiException: Key hash VQ3XhZb5_tBH9oGe2WW32DDdNS0 does not match any stored key hashes. 

VQ3XhZb5_tBH9oGe2WW32DDdNS0

En los desarrolladores de Facebook hashes clave de su aplicación.

Espero que esto ayude.

Es una buena pregunta. Y hay dos maneras de hacerlo. Lo que suele suceder con nosotros es la integración de Facebook SDK para Android, vamos siguiendo las instrucciones del sitio de desarrolladores de facebook .

Pero una vez que la aplicación está en la tienda de juegos, tendemos a olvidar un procedimiento que todavía está pendiente. Y terminamos con el mismo error:

 05-13 14:45:43.882: W/fb4a(:<default>):BlueServiceQueue(25454): Exception during service 05-13 14:45:43.882: W/fb4a(:<default>):BlueServiceQueue(25454): com.facebook.http.protocol.ApiException: Key hash XXXXXXXXXXXXXX does not match any stored key hashes. 

Jus consiguió una lista de comprobación para esto:

1) Usar la clave de depuración, mientras desarrolla la aplicación

El sitio de desarrolladores de Facebook es muy útil con esto. Simplemente copie el código que tienen en la página Getting Started en el símbolo del sistema. verbigracia:

 keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 

La contraseña para él es android y obtendrá la clave de depuración que lo sigue.

Introduzca aquí la descripción de la imagen

2) Generación de la clave de depuración, después de firmar la aplicación

Una vez que la aplicación esté lista para ser cargada en Google Play Store, debemos firmarla con una clave cuyo valor se genera desde el almacén de claves. Lo cual se explica bien por Satheesh en su respuesta . utilizando :

 keytool -exportcert -alias <Alias Name here> -keystore <Path to keystore> | openssl sha1 -binary | openssl base64 

Que le da una clave diferente, que la clave de depuración.

Introduzca aquí la descripción de la imagen

Después de probar todo lo anterior probé esto … y trabajó!

  1. Copiar el hash clave era el mismo que Facebook da en la excepción,
  2. Reemplace "_" por "/" y agregue un "=" al final,
  3. Añadir a Facebook
  4. Compruebe también el nombre del paquete y el nombre de la actividad una vez más. Esto funcionó para mí !!.

Bueno, si ur usando Windows use este comando en cmd.

Mover a C: \ Archivos de programa \ Java \ jdk1.8.0_25 \ bin

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64

Al generar la clave de hash necesitas usar openssl-0.9.8e_X64.zip en windows, no puedes usar openssl-0.9.8k_X64.zip

Esta es la solución.

Sólo reemplazar el hash de clave de error dentro de su aplicación https://developers.facebook.com/app …!

100 Por ciento que trabajará para seguro.

-Sunil

Activar inicio de sesión único Active la conexión única para su aplicación configurando Single Sign On en Sí a continuación. Verifique el punto no. 9 en https://developers.facebook.com/docs/facebook-login/android

  • ¿Qué tan seguro acceder a mi aplicación de Android con facebook-id?
  • Token de acceso eliminado en Facebook Android SDK 4.0
  • Clics de Facebook SDK 4.7.0 ClassNotFoundException para AppEventsLogger
  • LikeView Callback
  • Refrescar los permisos de token en Facebook Android SDK
  • El diálogo de Facebook compartido en Android no muestra el contenido
  • Java.lang.RuntimeException: Error al entregar el resultado ResultInfo mientras se registra usando Facebook
  • Call finish () del método estático
  • Abrir una página de Facebook desde la aplicación Android?
  • ¿Podemos cambiar la imagen del enlace (que está publicado por la aplicación android) en facebook
  • Facebook android sdk v4 inicio de sesión cancelar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.