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.
- Nueva API de Facebook 3.0. Y compatibilidad con ActionBarSherlock
- ¿Es posible extender los tokens de Facebook con extendAccessTokenIfNeeded en una aplicación para Android?
- "No se puede resolver el símbolo` Request` 'error para facebook Graph API
- Cómo resolver las herramientas de Facebook: replace = "android: theme"?
- Excepción inesperada de nivel superior en android-support-v4.jar
- FbDialog no muestra contenido completo en dispositivos más pequeños
- Moviendo la carpeta de instalación de SDK de Android
- Cómo utilizar Facebook SDK con android.app.Fragment
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.
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.
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.
Después de probar todo lo anterior probé esto … y trabajó!
- Copiar el hash clave era el mismo que Facebook da en la excepción,
- Reemplace
"_"
por"/"
y agregue un"="
al final, - Añadir a Facebook
- 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