the studio stored solucion obtener not invalid hashes generar does desarrollo con clave android facebook facebook-javascript-sdk

stored - login con facebook android studio



Android SDK de Facebook: generar hash de clave de liberaciĆ³n (9)

¡Esta es la forma más fácil que he encontrado hasta ahora para generar hash clave!

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) { }

Estoy construyendo una aplicación en la que los usuarios pueden iniciar sesión con Facebook.

Creé las teclas hash como las siguientes:

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

En el modo de depuración, todo funciona bien.

Cuando exporto el proyecto para su lanzamiento, da este error:

"Invalid key hash. The key hash ****************** does not match any stored key hashes"

Pego la clave impresa en el tablero del Desarrollador de Facebook, pero la aplicación todavía me da ese error.

El paquete completo de mi actividad es " com.app.package.views " y traté de usar este paquete (como el nombre del paquete de Google Play) en el panel, pero no cambió nada.

¿Cómo puedo resolverlo? ¿Cómo puedo generar el hash de la clave de liberación correcta?


¿Seguiste los pasos que Facebook proporciona para la creación de una aplicación de inicio de sesión?

Necesita un ''clave de producción'' obtenido a partir de su almacén de claves de liberación:

De la línea de comando:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Y agregue esta clave en las opciones de la página de la aplicación de Facebook.

Más información: https://developers.facebook.com/docs/android/getting-started/


// agregue este método a su primera actividad y abra el registro y busque la etiqueta Base64, este es el Hashkey i hoop it help

public void getHashkey(){ try { PackageInfo info = getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.i("Base64", Base64.encodeToString(md.digest(),Base64.NO_WRAP)); } } catch (PackageManager.NameNotFoundException e) { Log.d("Name not found", e.getMessage(), e); } catch (NoSuchAlgorithmException e) { Log.d("Error", e.getMessage(), e); } }


Encuentro una solución. para Mac

Usa este para obtener YOUR_RELEASE_KEY_ALIAS:

keytool -list -keystore /Users/***/Documents/keystore/***.jks

y este para obtener su lanzamiento keyhash:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore /Users/***/Documents/keystore/***.jks | openssl sha1 -binary | openssl base64

Esto funciona para mi.


Facebook SDK utiliza dos claves diferentes, una es la clave Debug que puede usar durante su fase de desarrollo y otra es la clave Release que se usa una vez que crea un paquete de aplicaciones firmado. Aquí hay un enlace sobre cómo crear claves de depuración y liberación.

Developer.Facebook

También echa un vistazo a this publicación SO.


La forma más sencilla de obtener la clave hash lanzada apk es: Obtener la clave SHA1 de la aplicación liberada usando el siguiente comando:

keytool -list -v -keystore keystore_path.jks -alias keystoreAlias

Entonces obtendrás la clave SHA1. Copie esa clave y genere la clave hash utilizando el siguiente sitio:

Enlace para obtener la clave hash

Obtendrá Output (base64): cópielo y utilícelo donde lo desee.


La solución más simple.

1) Firma tu apk.

2) Conecte su dispositivo a la máquina e instale la aplicación firmada en el dispositivo real.

3) Cuando se presione el inicio de sesión de Facebook, recibirá un mensaje de error que dice "Hash de clave no válida. El hash de la clave" xxx "no coincide con ninguna clave almacenada ..." en su logcat.

4) Copie la clave hash de logcat y ponga esta clave en developers.facebook.com/apps/104...../settings/


Necesitamos reemplazar la palabra "openssl" por la ruta de un archivo dentro de la estructura de openssl.

Entonces, mi comando CMD es:

C:/Program Files/Java/jre1.8.0_45/bin>keytool -exportcert -alias Informatheus -keystore C:/Users/Atendimento/Dropbox/AndroidKeystore/Keystore | C:/Users/Atendimento/Desktop/openssl/bin/openssl sha1 -binary | C:/Users/Atendimento/Desktop/openssl/bin/openssl base64

Funcionó.


keytool -exportcert -alias aliasName -keystore C:/my_release_keystroke_info.jks | openssl sha1 -binary | openssl base64