¿Cómo crear Android Facebook Key Hash?

No entiendo este proceso en absoluto. Pude navegar a la carpeta que contiene keytool en Java SDK. Aunque sigo obteniendo el error openssl no reconocido como un comando interno o externo. El problema es que incluso si puedo hacer que esto funcione, ¿qué haría y con qué después?

Aquí está lo que tú necesitas hacer –

Descarga openSSl desde Code Extract it. crea una carpeta- OpenSSL en C: / y copia el código extraído aquí.

detectar la ruta del archivo debug.keystore. Si no lo encontró, realice una búsqueda en C: / y utilice la ruta en el comando en el siguiente paso.

detecte su ruta de acceso keytool.exe y vaya a ese indicador de comando dir / in y ejecute este comando en 1 línea-

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64 

pedirá contraseña, poner Android eso es todo. obtendrás un hash de clave

Para Linux

Terminal abierta:

Para la comstackción de depuración

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

Encontrará debug.keystore en la carpeta “.android”. Cópielo y péguelo en el escritorio y ejecute el comando anterior.

Para la versión Build

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

NOTA: asegúrese de que en ambos casos solicite una contraseña. Si no solicita una contraseña, significa que algo está mal en el comando. La contraseña para debug.keystore es android y para el lanzamiento debe ingresar la contraseña que estableció durante la creación del almacén de claves .

Por favor intente esto:

 public static void printHashKey(Context pContext) { try { PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = new String(Base64.encode(md.digest(), 0)); Log.i(TAG, "printHashKey() Hash Key: " + hashKey); } } catch (NoSuchAlgorithmException e) { Log.e(TAG, "printHashKey()", e); } catch (Exception e) { Log.e(TAG, "printHashKey()", e); } } 

OpenSSL: debe instalarlo si no viene preinstalado con su sistema operativo (p. Ej., Windows no lo tiene preinstalado) . Cómo instalar eso depende de su sistema operativo (para Windows, consulte el enlace provisto por coder_For_Life22).

La manera más fácil sin juguetear es copiar el binario openssl.exe en la ruta de tu keytool si estás en Windows. Si no quiere hacer eso, debe agregarlo a su PATH entorno PATH . Luego ejecute el comando provisto en los documentos.

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

Tenga en cuenta que el argumento después de -keystore apunta a su almacén de claves de depuración. Esta ubicación también depende de su sistema operativo. Debe estar en una de las siguientes ubicaciones:

  • Windows Vista o 7 – C: \ Users \ .android \ debug.keystore
  • Windows XP – C: \ Documents and Settings \ .android \ debug.keystore
  • OS X y Linux – ~ / .android / debug.keystore

Si hiciste todo bien, se te debe pedir una contraseña. Eso es android para el certificado de depuración. Si la contraseña es correcta, la consola imprime un hash (caracteres y números un tanto aleatorios).

Toma eso y copialo en el campo de android key hash dentro de las preferencias de tu aplicación en Facebook. Para llegar allí, vaya a developers.facebook.com/apps , seleccione su aplicación, vaya a Edit settings y desplácese hacia abajo. Después de eso, espere unos minutos hasta que los cambios entren en vigencia.

para generar su hash de clave en su computadora local, ejecute la utilidad de keytool de Java (que debe estar en la ruta de su consola) contra el almacén de claves de depuración de Android. Esto es, por defecto, en su directorio home .android). En OS X, ejecuta:

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

En Windows, use:

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

Espero que esto te ayudará

Ref – sitio de Facebook para desarrolladores

Para ventanas:

  1. abrir símbolo del sistema y pegar debajo del comando

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

  1. Ingresa la contraseña: android -> Presiona Enter

  2. Copie la clave hash generada -> Inicie sesión en Facebook con su cuenta de desarrollador

  3. Vaya a su aplicación de Facebook -> Configuración -> Pegue la tecla Hash en la opción “hash de clave” -> guardar cambios.

  4. Ahora prueba tu aplicación de Android con Facebook Log-in / Share, etc.

Hay una solución corta también. Simplemente ejecuta esto en tu aplicación:

 FacebookSdk.sdkInitialize(getApplicationContext()); Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)); 

Uno más largo que no necesita FB SDK (basado en una solución aquí ):

 public static void printHashKey(Context context) { try { final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES); for (android.content.pm.Signature signature : info.signatures) { final MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); final String hashKey = new String(Base64.encode(md.digest(), 0)); Log.i("AppLog", "key:" + hashKey + "="); } } catch (Exception e) { Log.e("AppLog", "error:", e); } } 

El resultado debe terminar con “=”.

Así es como obtuve mi:

 private class SessionStatusCallback implements Session.StatusCallback { @Override public void call(Session session, SessionState state, Exception exception) { if (exception != null) { new AlertDialog.Builder(FriendActivity.this) .setTitle(R.string.login_failed_dialog_title) .setMessage(exception.getMessage()) .setPositiveButton(R.string.ok_button, null) .show(); } 

Por lo tanto, cuando intenta ingresar sin la clave, se producirá una excepción. Facebook puso la tecla DERECHA en esta excepción. Todo lo que necesitas hacer es copiarlo.

Para un enlace tutorial vedio fácil para generar KeyHash aquí

Descargue openssl desde AQUÍ

Para alguien como yo aquí hay detalles completos (para Windows)

1. Descargue OpenSSl 1ra o 2da según su sistema de 32 bits o 64 bits.

2. Extraiga el archivo zip descargado dentro del directorio C

3. Abra la carpeta extraída hasta bin y copie la ruta, debería ser algo como C:\openssl-0.9.8k_X64\bin\openssl (add \ openssl al final)

4. (Obtenga la ruta a la carpeta bin de Jdk, si sabe cómo, ignore esto).

Abra el archivo ~ de estudio android ~ Estructura del proyecto (ctrl + alt + shift + s), seleccione la ubicación del SDK en el panel lateral izquierdo, copie la ubicación JDK y agregue / bin a ella

Así que la ubicación final de JDK será como C:\Program Files\Android\Android Studio\jre\bin

estamos siguiendo este método para obtener la ubicación de Jdk porque podrías usar jdk integrado como yo

enter image description here

ahora tienes la ubicación de OpenSSl y la ubicación de JDK

5. Ahora necesitamos depurar la ubicación del almacén de claves, para eso abrir C ~> Users ~> YourUserName ~> .android debe haber un nombre de archivo debug.keystore, ahora copie la ubicación de la ruta, debería ser algo así como

C:\Users\Redman\.android\debug.keystore

6. ahora abre el símbolo del sistema y escribe comando

 cd YourJDKLocationFromStep4 

en mi caso

  cd C:\Program Files\Android\Android Studio\jre\bin 

7. Ahora construye el siguiente comando

 keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64 

en mi caso, el comando se verá como

 keytool -exportcert -alias androiddebugkey -keystore C:\Users\Redman\.android\debug.keystore | C:\openssl-0.9.8k_X64\bin\openssl sha1 -binary | C:\openssl-0.9.8k_X64\bin\openssl base64 

ahora ingrese este comando en el símbolo del sistema, si alguna vez lo hizo bien, se le solicitará una contraseña (la contraseña es android)

 Enter keystore password: android 

eso es todo, se te dará el Key Hash, simplemente cópialo y úsalo

Descargar open ssl :

A continuación, agregue openssl \ bin a las variables del sistema de ruta:

Mi computadora -> propiedades -> Configuraciones avanzadas -> Avanzadas -> Variables del sistema -> en las variables del sistema encuentran la ruta y la agregan a sus finales:; yourFullOpenSSLDir \ bin

Ahora abra una línea de comando en su carpeta jdk \ bin C: \ Archivos de progtwig \ Java \ jdk1.8.0_40 \ bin (en Windows mantenga presionada la tecla Mayús y haga clic derecho -> abra la línea de comandos aquí) y use:

 keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64 

Y copie el número de 28 dígitos que genera después de dar la contraseña.

Desde la API 26, puede generar sus CLAVES HASH usando el siguiente código en KOTLIN sin necesidad de Facebook SDK.

 fun generateSSHKey(context: Context){ try { val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES) for (signature in info.signatures) { val md = MessageDigest.getInstance("SHA") md.update(signature.toByteArray()) val hashKey = String(Base64.getEncoder().encode(md.digest())) Log.i("AppLog", "key:$hashKey=") } } catch (e: Exception) { Log.e("AppLog", "error:", e) } } 

enter image description here

Puede obtener todas sus huellas digitales en https://console.developers.google.com/projectselector/apis/credentials
Y usa este código de Kotlin para convertirlo a keyhash:

 fun main(args: Array) { listOf("", "", "") .map { it.split(":") } .map { it.map { it.toInt(16).toByte() }.toByteArray() } .map { String(Base64.getEncoder().encode(it)) } .forEach { println(it) } } 

Encontré la herramienta más simple y la utilicé muchas veces. Funciona perfectamente. échale un vistazo, te ayudará.

Verifique esta respuesta para más detalles.

Ejecuta esto en tu aplicación:

 FacebookSdk.sdkInitialize(getApplicationContext()); Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"="); 

O esto:

 public static void printHashKey(Context context) { try { final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES); for (android.content.pm.Signature signature : info.signatures) { final MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); final String hashKey = new String(Base64.encode(md.digest(), 0)); Log.i("AppLog", "key:" + hashKey + "="); } } catch (Exception e) { Log.e("AppLog", "error:", e); } } 

Y luego mira los registros.

El resultado debe terminar con “=”.

La solución se basa aquí y aquí .

Estaba teniendo el mismo problema exacto, no me solicitaban una contraseña, y parece que tenía una ruta incorrecta para el archivo del almacén de claves.

De hecho, si la herramienta de claves no encuentra el almacén de claves que ha establecido, creará uno y le dará la clave incorrecta, ya que no está utilizando la correcta.

La regla general es que si no se le solicita una contraseña, entonces se genera la clave incorrecta.

Puedes usar este apk

 1.first install the app from the Google play store 2.install the above apk 3.launch the apk and input the package name of your app 4.then you will get the hash code you want