integración de Facebook de Android hash de clave inválida

hola, todo en uno de mi aplicación, necesito obtener datos de fb … Lo estoy haciendo …

Creé la aplicación ID , inicie sesión con éxito pero luego de cerrar la sesión, inicie sesión y me da

captura de pantalla de error clave clave hash facebook

¿Qué está mal que estoy haciendo? Sugiero que estoy usando Facebook SDK … He instalado Facebook en mi teléfono … esta funcionando bien en el emulador que no tiene instalada una aplicación de Facebook incorporada

este es mi código

if (FB_APP_ID == null) { Builder alertBuilder = new Builder(this); alertBuilder.setTitle("Warning"); alertBuilder.setMessage("A Facebook Applicaton ID must be " + "specified before running this example: see App.java"); alertBuilder.create().show(); } // Initialize the dispatcher Dispatcher dispatcher = new Dispatcher(this); dispatcher.addHandler("login", LoginHandler.class); dispatcher.addHandler("stream", StreamHandler.class); dispatcher.addHandler("logout", LogoutHandler.class); // If a session already exists, render the stream page // immediately. Otherwise, render the login page. Session session = Session.restre(this); if (session != null) { dispatcher.runHandler("stream"); } else { dispatcher.runHandler("login"); } 

La clave hash generar está mal. Puede obtener la clave hash usando dos pasos. Uno es a través del símbolo del sistema. Otro es a través de la encoding. Tecla Hash a través del símbolo del sistema que funciona solo por primera vez. No sé el motivo. También tengo el mismo problema. Así que lo probé programáticamente.

Sigue estos pasos:

Pegue el siguiente código en oncreate() .

 try { PackageInfo info = getPackageManager().getPackageInfo( "com.example.packagename", 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 (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

Modifique “com.example.packagename” con el nombre de su paquete en la encoding anterior sin falta (puede encontrar el nombre de su paquete en el archivo de manifiesto de Android).

Ejecute su aplicación. Vaya a la actividad donde pegó el código anterior. En la búsqueda de logcat para “KeyHash”. Puede encontrar un hash clave. Copie el hash de la clave y vaya a la página del panel de la aplicación de Facebook. Ve a la configuración e ingresa los detalles como en la imagen inferior.

enter image description here

Una vez que haya terminado el paso anterior. Vuelve a iniciar la aplicación, ahora puedes iniciar sesión en Facebook. Para obtener más información sobre hash de clave, consulte el enlace

Si agrega una información incorrecta en la página de configuración significa que dará algún error. así que usa la información correcta allí. Y también si el público (que no sea usted) necesita usar su aplicación significa que necesita habilitar el permiso (change "yes" in the "Status & Review" next to setting) .

Si enfrenta este problema, coloque esta clave en su desarrollador.facebook.com

enter image description here

Luego asegúrate de que tu aplicación esté activa en

developer.facebook.com

Este círculo verde indica que la aplicación está en vivo

enter image description here

Si no es así, sigue estos dos pasos para hacer que tu aplicación en vivo

Paso 1 Vaya a su aplicación -> configuración => y agregue Correo electrónico de contacto y aplique Guardar cambios

Setp 2 Luego, vaya a la opción Revisión de la aplicación y asegúrese de que esta opción sea Sí, agregué una captura de pantalla

enter image description here

Nota: Si desea copiar hashkey, consulte la BlueServiceQueue en Logcat.

Si está utilizando la firma de la aplicación Google Play:

Abra la sección de firma de aplicaciones en Google Play Console y obtenga SHA1 del certificado de firma de aplicaciones , que convertirlo a base64 , por ejemplo con esta herramienta: http://tomeko.net/online_tools/hex_to_base64.php?lang=en

captura de pantalla de la consola

convertir a la captura de pantalla de base64

Tuve el mismo problema. ¡Estaba seguro de que fue por culpa muy pequeña y sí lo fue! Encontré la solución.

Al generar la clave hash de depuración en mi computadora, ingresé la contraseña de mi sistema. Pero la contraseña debe ser la siguiente:
Ingrese la contraseña del almacén de claves: “android”
Este fue el único problema en mi caso.

—– Para generar hash de clave Debug , use este comando –

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

Ingrese la contraseña de keystore: ‘android’

—– Para generar el hash de la clave de liberación , use este comando –

keytool -exportcert -alias “alias de keystore” -keystore “tu camino al almacén de claves cuando firmas la aplicación” | openssl sha1 -binary | openssl base64

Proporcione su contraseña de almacén de claves después de ejecutar este comando.

Experimenté el mismo problema. Hice una breve investigación sobre las posibles razones de este comportamiento extraño y encontré lo siguiente:

  • Durante la primera ejecución de una nueva aplicación de Facebook, permitirá la conexión / inicio de sesión incluso si no especifica ningún hash clave.

  • Para mí, el tutorial proporcionado por Facebook no generó el hash de clave correcto, porque estaba dando la configuración incorrecta . Al ejecutar:

     keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64 

asegúrese de verificar todas las propiedades: HOMEPATH , la existencia del almacén de claves, etc. Quizás también deba proporcionar una contraseña.

  • Lo que generó la configuración adecuada fue la solución sugerida por @Mahendran .

  • Además, si ve el error publicado originalmente ( http://i.stack.imgur.com/58q3v.png ), lo más probable es que el hash clave que ve en la pantalla sea el verdadero. Si nada más funciona, intente ingresarlo en Facebook.

Obtuve todos esos resultados con: Windows 7 edición de 64 bits, Android Studio 1.2.2, JDK 7.

Según Facebook Login para Android , debe proporcionar el valor de Key Hash. Para obtenerlo, necesitará la clave utilizada para firmar su solicitud.

 keytool \ -exportcert \ -alias YourKeyAlias \ -storepass YourStoreKeyPassword \ -keystore PathToYourKeyStoreFile | openssl sha1 -binary | openssl base64 

¡Intenté todo lo anterior y nada ayudó a mi caso con mis clientes! Entonces mi cliente recordó que tenía la aplicación de Facebook instalada en su dispositivo. Después de eliminarlo, el inicio de sesión funcionó perfectamente. El hashkey ha sido cambiado y he reemplazado las viejas claves hash en Facebook Developers Console con la clave del error (como se sugirió anteriormente) ¡y funciona! La aplicación de Facebook en sí misma podría ser el problema, por lo que es mejor que descubras esto en un dispositivo con la aplicación de Facebook instalada y en un dispositivo con la aplicación de Facebook no instalada y maneja ambos casos.

Debe crear dos hash de clave uno para Debug y otro para Release.

Para el hash de la clave Debug :

En OS X, ejecuta:

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

En Windows, ejecuta:

 keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64 

Debug key hashes source

Para el hash de la clave de liberación :

En OS X, ejecute: (Reemplace qué entre <> con sus valores)

 keytool -exportcert -alias  -keystore  | openssl sha1 -binary | openssl base64 

En Windows, use: (Reemplace qué entre <> con sus valores)

 keytool -exportcert -alias  -keystore  | openssl sha1 -binary | openssl base64 

Release key hashes source

Estaba teniendo el mismo problema. Primer inicio de sesión, bien, pero luego, hash de clave no válida.

Aunque este no es un hilo de Unity, encontré mi respuesta aquí. Así que dejaré mi respuesta, solo en caso de que alguien más (extraviado como yo) tropiece con ella.

El SDK de Facebook para Unity recibe el hash de clave incorrecto. Obtiene la clave de “C: \ Users \” su usuario “.android \ debug.keystore” y, en un mundo perfecto, debe obtenerla del almacén de claves que creó en su proyecto. Es por eso que te está diciendo que la clave hash no está registrada.

Según lo sugerido por Madi , puede seguir los pasos en este enlace para encontrar la clave correcta. Simplemente haga que Shure los dirija al almacén de claves dentro de su proyecto, de lo contrario, no obtendrá la clave correcta.

pegue el siguiente código en su método OnCreate

 try { PackageInfo info = getPackageManager().getPackageInfo( "com.example.packagename", 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 (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } 

Simplemente modifique el nombre del paquete. Luego vaya a su Log cat y seleccione Debug search aquí, luego encontrará la clave hash. Ahora copie esta clave hash y luego vaya al sitio developer.facebook.app_id, luego edite su clave hash y luego presione save. Ahora ejecuta tu proyecto de Android nuevamente. Creo que el problema se resolverá.

Después de una larga investigación, encontramos una solución.

Hemos establecido permisos como:

loginButton.setReadPermissions (public_profile email);

Esto funcionó por primera vez, pero cuando volvimos a iniciar sesión en FB, dio el Error Hash Inválido.

La solución simple fue cambiar la línea anterior a:

  loginButton.setReadPermissions(Arrays.asList( "public_profile", "email")); 

¡Y funcionó como una bendición!

Espero que esto ayude a alguien.

Facebook debe devolver la excepción correcta en lugar del error de la clave hash no válida y engañosa.

Este código le dará su hash para Facebook, pero tiene que seguir estos pasos para obtener el hash de condidate de la versión. 1. Copia y pega este código en tu mainactividad

 try { PackageInfo info = getPackageManager().getPackageInfo( "com.example.packagename", 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 (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 
  1. generar apk firmado
  2. conecta tu teléfono a la computadora portátil y asegúrate de que permanezca conectado.
  3. instala y ejecuta el apk en tu teléfono moviendo manualmente el apk de lanzamiento a tu teléfono.

  4. Ahora mira el logcat de Android (usa el filtro KeyHash:) deberías ver tu clave hash de lanzamiento para facebook. simplemente cópielo y péguelo en https://developers.facebook.com/apps en la configuración.

  5. ahora puedes probar la aplicación, debería funcionar perfectamente.

    buena suerte.

Esto puede ayudar a alguien con el mismo problema

  1. Generar hash de clave usando el código siguiente

keytool -exportcert -alias alias -keystore | openssl sha1 -binary | openssl base64

cómo usar keytool

2. Colóquelo en el campo requerido en el desarrollador de Facebook

3. En Android studio File-> Project Structure enter image description here

agregar parámetros de firma

4. Seleccionar sabores enter image description here

seleccionar la configuración de firma que creamos

5.seleccionar tipo de construcción enter image description here

6.Seleccione varient de comstackción y compárelo

enter image description here

Tuve el mismo problema cuando estaba depurando mi aplicación. He reescrito el hash que has tachado en la imagen adjunta (el que Facebook dice que no es válido) y lo he agregado en la consola de desarrolladores de Facebook a los hashes clave. Solo ten cuidado con los errores tipográficos.

Esta solución es más fácil de solucionar que una solución adecuada.

Lo que Facebook utilizó no es la contraseña y el alias predeterminados para la depuración. Debe cambiarlo a continuación y funcionará.

 /usr/lib/jvm/jdk1.8.0_66/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 

Si no ha cambiado nada con la contraseña predeterminada, debe ser Android. También puede configurarlo en el archivo build.gradle. Pero la misma contraseña de alias se debe usar para generar hash.

 android{ signingConfigs { release { storeFile file("~/.android/debug.keystore") storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } } } 

Después de tantas pruebas tropecé con una solución para esto. Genere y agregué ambas claves de depuración y liberación a la consola de desarrollador de Facebook y aún recibo el error.

La única solución que funcionó para mí fue desinstalar el progtwig OpenSSL de Google y descargarlo de http://slproweb.com/products/Win32OpenSSL.html

Realmente funciona como magia

Use el código siguiente en el método onCreate () de su actividad

 try { PackageInfo info = getPackageManager().getPackageInfo( "your application 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 (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

Ejecute este código, esto generará la tecla Hash. copie este KeyHash en la configuración de la aplicación Facebook -> Guardar cambios. luego, inicie sesión en su aplicación. esto funcionará perfectamente en el futuro también.

Chicos aquí hay muchas respuestas correctas. Sólo una cosa. Pegar el hash recibido en la aplicación -> Configuración -> Principal no a través del tutorial de inicio rápido.