tutorial - Facebook Android genera clave hash
log in with facebook android (20)
Generar clave hash Debug
public String hashkey(Context context) {
String keyhash = "";
try {
PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 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));
keyhash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
return keyhash;
}
Generar clave hash de liberación
keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64
Al tratar de crear una aplicación de Android con integración de Facebook, he llegado a la parte en los documentos en los que tienes que generar un archivo hash clave, especifica ejecutar el siguiente código
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore
| openssl sha1 -binary
| openssl base64
Cuando ejecuto esto en mi terminal recibo un error para Keystore manipulado o la contraseña era incorrecta,
Solo quiero generar mi Key Hash
¿Alguien puede señalarme en la dirección correcta?
RESPUESTA ACTUALIZADA (Generando a través del código) Método más simple:
En mi experiencia, openssl siempre es problemático, probé el segundo método sugerido por Facebook. Y es maravilloso. Este es el mejor método para obtener la clave hash.
La segunda opción es imprimir el hash de clave enviado a Facebook y usar ese valor. Realice los siguientes cambios en el método onCreate () en su actividad principal:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.loginhowto",
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) {
}
...other operations
}//end of onCreate
Reemplace com.facebook.samples.loginhowto con su propio nombre de paquete (nombre del paquete en Manifest.xml).
Enlace oficial - https://developers.facebook.com/docs/android/login-with-facebook/ (Ver la parte inferior de la página)
ANTERIOR RESPUESTA (generación de Keyhash usando openssl)
- para generar firma, necesita instalar openssl en su pc. Si no tiene una descarga openssl here.
- En C: Crear carpeta
openssl
- extrae el contenido del archivo zip de openssl descargado en la carpeta de
openssl
enC:
unidad - abrir símbolo del sistema
- mover a
bin
deopenssl
es decir,C:/openssl/bin
en el símbolo del sistema ejecuta el siguiente comando para generar tu keyhash. Al generar hashkey, debe pedirte tu contraseña.
keytool -exportcert -alias androiddebugkey -keystore "C: / Users / Anhsirk.android / debug.keystore" | openssl sha1 -binary | openssl base64
NOTA : en el código anterior, tenga en cuenta que debe dar su ruta al usuario (es decir, en mi caso es C: / Users / Anhsirk, solo necesita cambiar esto para su cuenta de usuario.
Dar contraseña como android
. Si no solicita una contraseña, la ruta del almacén de claves es incorrecta.
Si todo funciona bien, debería darle el hashkey a continuación.
A pesar de que este hilo es antiguo, me gustaría compartir mi experiencia (recientemente comencé a trabajar con Facebook), lo que me parece directo:
- Descargue openssl desde el siguiente enlace: https://code.google.com/p/openssl-for-windows/downloads/list
- Descomprímalo en una unidad local (por ejemplo, C: / openssl)
Para obtener la clave de Desarrollo para la integración de Facebook, use el siguiente comando desde la línea de comando en Windows:
keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .android / debug.keystore | "C: / openssl / bin / openssl.exe" sha1 -binary | "C: / openssl / bin / openssl.exe" base64
¡NOTA !: reemplace la ruta de acceso de openssl.exe (en este ejemplo es "C: / openssl / bin / openssl.exe") con su propia ruta de instalación.
- Le solicitará una contraseña, por ejemplo,
Ingrese la contraseña de keystore: android
Escriba android como contraseña como se muestra arriba.
¡Eso es! Se te dará una clave larga de 28 caracteres. ¡Aclamaciones!
Use el mismo procedimiento para obtener la clave de liberación. Simplemente reemplace el comando con lo siguiente y use su alias de clave de liberación.
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | "PATH FOR openssl.exe" sha1 -binary | openssl base64
Al final :)
Aquí mi historia:
Agregue este código a su actividad principal, después de configurar el diseño.
try { PackageInfo info = getPackageManager().getPackageInfo("PROJECTNAME", 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); //textInstructionsOrLink = (TextView)findViewById(R.id.textstring); //textInstructionsOrLink.setText(sign); Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show(); } } catch (NameNotFoundException e) { Log.d("nope","nope"); } catch (NoSuchAlgorithmException e) { }
¡Cambie PROJECTNAME al nombre de su paquete!
- Firme su aplicación (Herramientas Android-> Solicitud firmada de exportación)
- En su actividad principal, donde pega código de la opción 2, en su diseño cree TextView con id textstring
- Descomenta dos líneas, que tu código de señas esté configurado en TextView 6 Wuolia, tienes tu HASH, instala la aplicación en tu teléfono. ¡y revisa tu clave hash!
- Ahora, cuando esté visible, vaya a la aplicación de Facebook que creó y agréguela a [Claves hash]
- Tenga en cuenta que el nombre de su paquete debe ser el mismo que en Facebook [Nombre del paquete] en [Key Hashes]
- Que tengas un buen día :)
Elimine su certificado de depuración en ~ / .android / debug.keystore (en Linux y Mac OS X); el directorio es algo así como% USERHOME% /. android en Windows.
El complemento Eclipse debería generar un nuevo certificado la próxima vez que intente construir un paquete de depuración.
Avísame si eso funciona.
Gran publicación de blog sobre el tema
Extracción de la tecla hash desde la tecla .p12
- Abre el terminal o la línea de comando y navega hasta donde está tu clave .p12.
- Escriba: "keytool -v -list -keystore mycert.p12 -storetype pkcs12" donde mycert.p12 es el nombre de archivo de su clave .p12.
- Ingrese la contraseña del almacén de claves (la que utilizó cuando exportó la clave .p12). 4. Copie el texto de los bytes de la firma de la huella digital sha1.
- Los bytes en la firma de huella digital sha1 son necesarios para escribir el archivo "sha1.bin". Puede usar un editor hexadecimal para pegar los bytes que copió. Luego, guarde el archivo como "sha1.bin".
- Abra el terminal nuevamente y escriba: "openssl base64 -en sha1.bin -out base64.txt".
- El "base64.txt" resultante contendrá el Key Hash que se necesita para Facebook.
Editor hexadecimal genial y simple para mac: HexFiend
OpenSSL debe estar preinstalado en mac, y aquí está el enlace para la versión de Windows.
Hola a todos es mi historia cómo me firmo tiene clave para facebook
antes que nada tienes que copiar estos 2 métodos en tu primera clase
private void getAppKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
System.out.println("HASH " + something);
showSignedHashKey(something);
}
} catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
Log.e("exception", e.toString());
}
}
public void showSignedHashKey(String hashKey) {
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle("Note Signed Hash Key");
adb.setMessage(hashKey);
adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
adb.show();
}
** Llame al funcation getAppKeyHash () desde su metodo oncreate si quiere hash firmado y luego haga que la compilación firmada firme compilación y ejecución obtendrá la clave hash en el cuadro de diálogo, simplemente anótelo y actualícelo en la cuenta dev de Facebook y comente esa función y cree otra APK firmado **
Intente pasar la contraseña de la clave y almacenar como parte del comando
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -keypass android -storepass android /
| openssl sha1 -binary /
| openssl base64
La clave correcta se puede obtener de la aplicación agregando el siguiente código para brindar el hash de la clave correcta (en el caso de Facebook SDK 3.0 en adelante, esto funciona)
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) {
}
Reemplace com.package.mypackage con su nombre de paquete
La contraseña del certificado de depuración es Android y no Android
Lo único que funciona para mí es usar la contraseña de android
. ¿Por qué no se menciona eso en ninguna guía?
Para generar el hash de la clave de liberación, debes seguir algunos pasos sencillos.
1) Descargar Openssl
2) Crea una carpeta openssl en la unidad C
3) Extraiga los archivos Zip en esta carpeta openssl creada en la Unidad C.
4) Copie el archivo debug.keystore de la carpeta .android en mi caso (C: / Users / SYSTEM.android) y pegarlo en la carpeta JDK bin en mi caso (C: / Program Files / Java / jdk1.6.0_05 / bin)
5) Abra el símbolo del sistema y proporcione la ruta de la carpeta JDK Bin en mi caso (C: / Program Files / Java / jdk1.7.0_40 / bin).
6) Copie el siguiente código y presione enter
keytool -exportcert -alias abcd-keystore D: / Projects / MyAppFolder / keystore.txt | C: / openssl / bin / openssl sha1 - binario | C: / openssl / bin / openssl base64 ex - keytool -exportcert -alias (tu nombre de alias apk ingresa aquí como mi signo apk alian nombre es abcd) -keystore "firmó apk generó keysto apth enter here" | "ruta de la carpeta openssl bin enter here" sha1 - binary | "ruta de la carpeta openssl bin enter here" base64
7) Ahora debe ingresar la contraseña, Contraseña = (ingrese su contraseña del almacén de claves de registro aquí)
8) obtuviste el keystore que se usa para liberar el hash de la clave de la aplicación
Para generar hash clave, debes seguir algunos pasos sencillos.
1) Descargue Openssl desde: here.
2) Crea una carpeta openssl en la unidad C
3) Extraiga los archivos Zip en esta carpeta openssl creada en la Unidad C.
4) Copie el archivo debug.keystore de la carpeta .android en mi caso (C: / Users / SYSTEM.android) y pegarlo en la carpeta JDK bin en mi caso (C: / Program Files / Java / jdk1.6.0_05 / bin)
5) Abra el símbolo del sistema y proporcione la ruta de la carpeta JDK Bin en mi caso (C: / Archivos de programa / Java / jdk1.6.0_05 / bin).
6) Copie el siguiente código y presione enter
keytool -exportcert -alias androiddebugkey -keystore debug.keystore> c: / openssl / bin / debug.txt
7) Ahora debe ingresar la contraseña , Contraseña = android.
8) Si ve en la carpeta del contenedor openssl , obtendrá un archivo con el nombre de debug.txt
9) Ahora puede reiniciar el símbolo del sistema o trabajar con el símbolo del sistema existente
10) regrese a la unidad C y proporcione la ruta de la carpeta del contenedor openssl
11) copie el siguiente código y péguelo
openssl sha1 -binary debug.txt> debug_sha.txt
12) obtendrá debug_sha.txt en la carpeta openssl bin
13) Copie nuevamente el código siguiente y péguelo
openssl base64 -en debug_sha.txt> debug_base64.txt
14) obtendrá debug_base64.txt en la carpeta de openssl bin
15) abrir el archivo debug_base64.txt Aquí está su clave hash.
Pude realizar la tarea solicitada con algunas de las soluciones aquí, pero pensé para mí mismo, muchacho que es estúpido ... ¿por qué no escribir un pequeño código de Java que hace esto y empacarlo en un tarro, así lo hice. ..
Un enlace para descargar el Jar
Funciona en Windows 8 ... no intenté con ningún otro sistema operativo.
Si está liberando, use el almacén de claves que utilizó para exportar su aplicación y no el depurador.keystore.
Si su contraseña = android es incorrecta, escriba la contraseña de su PC que funcione para mí.
Y para generar keyHash prueba este enlace Here
Una solución de línea para generar para facebook
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
use esto en kotlin para imprimir el hash de la clave en el registro
try {
val info = context.getPackageManager().getPackageInfo(context.packageName,
PackageManager.GET_SIGNATURES);
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
}
}catch (e:Exception){
}
I. Crear depuración clave hash para facebook
Agregue código para imprimir el hash clave para Facebook
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.google.shoppingvn", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:",
Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
II. Crear key hash release para facebook
- Descargar here.
- Crear una carpeta openssl en la unidad C
- Extraiga archivos Zip en la carpeta openssl
- Inicio -> Ejecutar: cmd (presionar enter)
- (presione) cd C: / Archivos de programa / Java / jdk1.6.0_45 / bin. Nota: C: / Archivos de programa / Java / jdk1.6.0_45 / bin: es la ruta a la carpeta jdk en su computadora
(presionar) keytool -exportcert -alias gci -keystore D: / folder / keystorerelease | C: / openssl / bin / openssl sha1 -binary | C: / openssl / bin / openssl base64. Nota: D: / folder / keystore libera: es la ruta de acceso a tu keystorerelease
Ingrese la contraseña del almacén de claves: esta es la contraseña cuando su almacén de claves de registro libera.
Luego tendrá un hash clave: jDehABCDIQEDWAYz5Ow4sjsxLSw =
Inicio de sesión de Facebook. Acceso a Administrar aplicaciones. Pegue hash de clave en su aplicación en developers.facebook.com
SOLUCIÓN MÁS SIMPLE HACIA FUERA PARA ESTE PROBLEMA:
He tenido este problema durante dos meses. Mis claves hashes han estado hasta 9. Hoy finalmente encontré la solución simple:
PASO 1:
Instale el sdk de Facebook que descargó de la página del desarrollador de Facebook en su teléfono. No instale la aplicación normal de Facebook. Asegúrate de que puedes iniciar sesión en Facebook. Luego cierre la sesión.
PASO 2:
Exporte su aplicación con su clave de lanzamiento final como una aplicación, como lo haría al subirla a la tienda de juegos.
PASO 3:
Coloque el archivo Apk en su teléfono mediante un cable usb o un dispositivo USB.
ETAPA 4:
Instale su aplicación, usando un administrador de archivos: Example
PASO 5:
Inicie su aplicación e intente iniciar sesión con Facebook. Se abrirá un cuadro de diálogo y le dirá: "la clave YOURHASHKEY no se ha encontrado en la consola del desarrollador de Facebook"
PASO 6:
Escriba la clave.
PASO 7:
Póngalo en su consola de desarrollador de Facebook y guárdelo. Ahora terminaste. Cualquiera que descargue su aplicación, publicada con keystore usado anteriormente, puede iniciar sesión en Facebook.
Disfrutar