Encuentra el hash clave para una aplicación firmada
He firmado mi aplicación y exportado a una carpeta en mi escritorio llamada app en esta carpeta es mi aplicación en sí y el keystore. ¿Cómo puedo encontrar el hash clave que puedo copiar en la página de desarrolladores de Facebook. Tengo openssl instalado, pero parece que no puede generar la clave hash ive probado muchos otros temas en la pila y ninguno parecía ayudar, gracias
James
- Compruebe el keypass keystore de android para ver si es correcto
- Android Marketplace: ¿Los detalles (nombre, etc) en el almacén de claves son visibles para el usuario?
- Cacerts.bks no existe
- Arreglar debug.keystore para trabajar con ADT 22 y Google Maps v1 Clave de API
- No se encontró cadena de certificados, cómo arreglar y publicar en Google Play Store?
- Obtener Android Google Map v2 trabajando en la versión de lanzamiento mediante la generación de huella digital SHA1 para la clave de la API
- Problema al ejecutar mi keystore firmado y liberado en Eclipse
- ¿Puedo fusionar varios archivos de keystore de Android en uno?
- ¿Por qué la huella digital es diferente en mi apk recién firmado?
- Java Keystore contraseña sin sentido?
- Keytool Signing Problem: Keystore fue manipulado, o la contraseña fue incorrecta
- Generar clave de hash para la aplicación utilizando facebook sdk
- Usando una contraseña de keystore vacía solía ser posible?
- Usted debe saber dónde está su archivo de almacén de claves. Para mí es
C:\Users\Selvin\Desktop\selvin.kp
- Usted debe saber su alias en keystore. Para mi es
selvin
- Usted debe saber el camino a keytool.
C:\Program Files\Java\jdk1.6.0_22\bin\keytool.exe
- Usted debe saber el camino a openssl.
C:\OpenSSL-Win32\bin\openssl.exe
- Usted debe saber la contraseña para keystore. Para mí es ***** jeje
Luego, debe llamar a:
C: \ Archivos de programa \ Java \ jdk1.6.0_22 \ bin \ keytool.exe "-exportcert -alias selvin -keystore c: \ users \ selvin \ desktop \ selvin.kp | C: \ OpenSSL-Win32 \ bin \ openssl sha1 -binary | C: \ OpenSSL-Win32 \ bin \ openssl base64
Reemplazar mi camino y alias con los adecuados.
Entonces deberías ver:
Introduzca la contraseña del almacén de claves:
Introduzca su contraseña y debería obtener algo como esto: NfhDlIH7XWJzUZRjL+pZySrMX1Q=
EDITADO : NfgDlIG7XWJzUZRUL+bZySrMX1Q=
<- es un mal hash. O tienes tanta suerte que tu llave hizo la misma colisión que
Error: keytool error: java.lang.Exception: El alias no existe
Si hash no funciona:
Primera llamada
C: \ Archivos de programa \ Java \ jdk1.6.0_22 \ bin \ keytool.exe "-exportcert -alias selvin -keystore c: \ users \ selvin \ desktop \ selvin.kp
Escriba la contraseña y lea el error
Si no recuerda su keytool error: java.lang.Exception: Alias <selvinn> does not exist
alias keytool error: java.lang.Exception: Alias <selvinn> does not exist
He usado selvinn para mostrar error.
Para obtener una lista de todas sus entradas / alias:
C: \ Archivos de programa \ Java \ jdk1.6.0_22 \ bin \ keytool.exe -list -keystore c: \ users \ selvin \ desktop \ selvin.kp
Segunda edición
Para aquellos que siguen luchando, he encontrado que estos pasos cuando se siguen correctamente sin duda funcionará, pero pueden ser muy difíciles de conseguir la primera vez, y de hecho he encontrado que a veces la conversión de base64 de la huella digital cuando se trata de algún alias "no funcionan (El hash se trunca por alguna razón). He escrito varios archivos por lotes que tirar la mayoría de estas instrucciones ya mencionadas juntos por lo que no descarta un problema allí.
Sin embargo, esencialmente la mayoría de la gente se cae en la etapa de openssl (o no puede encontrarla, no sabe cómo usarla, o la tubería de Windows no encadena correctamente la salida de la exportación SHA1 a la entrada de conversión de base64).
Para evitar esto se puede utilizar un método alternativo que es probablemente más fácil de seguir y entender. Esencialmente, lo que la API de facebook quiere es la representación de base64 (codificación) del hash SHA1 que se utiliza para imprimir con la huella digital su APK. Para hacer esto, sólo puede listar el keystore:
"C:\Program Files\Java\JRE6\Bin\keytool.exe" -list -v -keystore "Path-to-your-keystore" -storepass "KeystorePassword" > somefile.txt
Obviamente, usted necesita cambiar la ruta al ejecutable de keytool de acuerdo con su propia configuración y reemplazar "Path-to-your-keystore" y "KeystorePassword" con su ruta de acceso de keystore y contraseña! El resultado debe ser la creación de un archivo "sometext.txt" en la carpeta actual que se puede abrir en cualquier editor de texto. El archivo de texto mostrará todos los alias del almacén de claves 'y sus respectivos hashes MD5 y SHA1 como cadenas hexadecimales.
Ahora acaba de encontrar el alias utilizado para firmar su APK, copiar el hash SHA1, y utilizar cualquier hex en línea a base64 convertidor para convertirlo al formato de codificación base64 que requiere facebook. Usted puede encontrar un convertidor en línea googling "en línea hex a base64 convertidor". He estado usando esto como usted puede apenas copiar y pegar la secuencia derecha del archivo de texto en al cuadro proporcionado y quitará apenas los dos puntos que separan cada byte del hex.
Un punto final (algo obvio, pero ..) sólo copiar y pegar la cadena hexadecimal y NO el prefijo SHA1:!
Espero que esto ayude a alguien; Ciertamente funciona para mí!
Primero me gustaría agradecer a Selvin!
Esta respuesta es casi idéntica a la respuesta de Selvin, pero todavía me tomó 3 horas para conseguir que funcione: P por lo que un tutorial poco más para los newbs reales
Cómo obtener una hashKey desde un almacén de claves
- Primero instale OpenSSL desde el código de google y colóquelo en el enlace de descarga de la carpeta C: \
- Encontrar la ubicación del programa keytool (predeterminado en la carpeta java)
- Find keystore location (hay un valor predeterminado de depuración)
Ubicación keytool C: \ Archivos de programa (x86) \ Java \ jdk1.xxx) \ bin \ keytool ubicación openssl C: \ OpenSSL-Win32 \ bin \ OpenSSL ubicación (depuración) keystore C: \ Users [usernamepc] .android \ debug. Almacén de claves
Abra cmd en windows (start-> run-> cmd) y navegue a la ubicación de keytool o copie pegue la siguiente cadena, tenga en cuenta que no puede usar ctrl + v sino mouseclick derecho
cd c:\program files (x86)\java\jdk1.7.0_01\bin
Cuando en el directorio correcto pegue esta cadena en la línea cmd:
keytool.exe -exportcert -alias androiddebugkey -keystore c:\users\charx\.android\debug.keystore | C:\OpenSSL-Win32\bin\openssl sha1 -binary | C:\OpenSSL-Win32\bin\openssl base64
"C: \ OpenSSL-Win32 \ bin \ openssl" es la ruta de acceso de opensssl.exe reemplazarlo con el camino de su openssl.exe
Asegúrese de que cambia el [usernamepc] de yourto el nombre de su PC como se puede ver en mi caso es charx. También el directorio para el java jdk xxxx depende de su versión.
Cmd debe mostrar hashkey
Hash para mi archivo de depuración es
h1GdQbgB8b/liCG+acmZWkgIRHA=
Una solución con Eclipse (para personas perezosas como yo).
Seleccione cualquier proyecto en Eclipse, Exportar – Aplicación de Android, ingrese su pase de clave, etc. y en la última página en la parte inferior verá MD5: …. SHA1: ….
Copie la cadena SHA1 y péguela en cualquier convertidor en línea HEX-Base64 (por ejemplo éste: http://tomeko.net/online_tools/hex_to_base64.php )
Felicitaciones! Usted tiene la clave hash necesaria para Facebook Dev Console.
No podía ser molestado con todo esto Veo lo que el sdk de facebook es realmente el envío de la exportación de mi aplicación firmada con el código de la temperatura en el lugar para mostrar facebook error.toString () en Authorize que da la clave de hash su busca entonces poner esto en mi Facebook Aplicación y bingo!
Las soluciones mencionadas anteriormente no funcionó para mí por alguna razón, pero fue capaz de generar keyhash con éxito. Estoy escribiendo el paso 10 más fácil para obtener keyhash de su apk firmado [apk firmado con keystore] :
-
Copie el siguiente código en su
activity [start Activity]
.Este código debe estar contenido en su actividad para que pueda extraer el keyhash adecuado cuando se inicie la actividad de su apk firmado.private void getHashKey() { try { PackageInfo info = getPackageManager().getPackageInfo( getPackageName(), PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.e("MY_KEY_HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } }
-
Su archivo
AndroidManifest.xml
debe tener el atributoandroid:allowBackup="true"
en su etiqueta de aplicación. -
Exportar su apk firmado e instalar la aplicación en su teléfono móvil y, a continuación, conecte su teléfono en modo de depuración con la
usb debugging on
. -
Luego vaya a
sdk\platform-tools
-
Abra el símbolo del sistema y escriba los
adb devices
para ver si su dispositivo está conectado o no. Si el dispositivo no aparece en la lista, intente solucionarlo antes de continuar con el paso siguiente. -
A continuación, escriba
adb logcat >"log.txt"
. Su pantallacmd
tendrá gusto colgado. No se preocupe. Su perfectamente normal como todo el logcat se está escribiendo enlog.txt
. -
Ejecute su aplicación y espero que cuando usted piensa que la función
getHashKey()
se ejecuta, a continuación, presionectrl+c
en el símbolo del sistema para finalizar la escritura del archivo de registro. -
Ahora el símbolo del sistema volverá a responder de nuevo. Ahora entra en tu directorio
sdk\platform-tools
y verás que se ha creado un archivo log.txt que contiene registros. -
Ahora
texteditor
en untexteditor
y buscaMY_KEY_HASH:
"———– Tu keyhash ——-" - Copiar esto en su
FB account
o dondequiera que lo necesite y luego hacer otra construcción en la que la funciónandroid:allowBackup="false"
ygetHashKey()
se elimina.
Espero que esto ayudó a todos 🙂
- Comando adb para obtener la dirección IP asignada por el operador
- Android: ¿Puedo ignorar los errores "Vista primaria no es un TextView" y "sendUserActionEvent () mView == null"?