Pregunta

Al intentar crear una aplicación de Android con la integración de Facebook, he llegado a la parte en los documentos donde tiene que generar un archivo de 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 la tienda de claves manipulada o la contraseña era incorrecta,

Solo quiero generar mi hash clave

¿Alguien puede señalarme en la dirección correcta?

¿Fue útil?

Solución

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 debe generar un nuevo certificado cuando luego intente crear un paquete de depuración.

Avísame si eso funciona.

Otros consejos

Para generar hash clave, debe seguir algunos pasos sencillos.

1) Descargar OpenSSL de: aquí.

2) Haz un openssl carpeta en C conducir

3) Extraiga archivos zip en esto openssl carpeta creada en C Conducir.

4) Copie el archivo depurar.keystore de .androide Carpeta en mi caso (C: Users System.Android) y pegue en la carpeta JDK bin en mi caso (c: archivos de programa java jdk1.6.0_05 bin)

5) Abrir el símbolo del sistema y dar 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 necesitas introducir la contraseña, Contraseña = Android.

8) Si ves en openssl Carpeta bin, 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) Vuelve a C Drive y Dar el camino de OpenSsl Bin carpeta

11) Copie el siguiente código y pegue

openssl sha1 -binary debug.txt> debug_sha.txt

12) Obtendrás debug_sha.txt En la carpeta de bin de OpenSSL

13) nuevamente copie el siguiente código y pegue

OpenSSL Base64 -in debug_sha.txt> debug_base64.txt

14) Obtendrá debug_base64.txt En la carpeta de bin de OpenSSL

15) Abrir debug_base64.txt Archivo aquí está su hash clave.

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 tecla hash.

La segunda opción es imprimir el hash clave enviado a Facebook y usar ese valor. Haga 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/ ( Vea el final de la página)

Respuesta antigua (generar keyhash usando OpenSSL)

  1. Para generar firma, necesita OpenSSL instalado en su PC. Si no tienes una descarga OpenSsl de aquí
  2. En c:, crea openssl carpeta
  3. Extraiga el contenido del archivo ZIP OpenSSL descargado en openssl carpeta en C:conducir
  4. Abrir el símbolo del sistema
  5. mover a bin de openssl es decir C:\openssl\bin en el símbolo del sistema
  6. Ejecute el siguiente comando para generar su Keyhash. Mientras se genera Hashkey, debería preguntarle la 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 Tu camino hacia el usuario (es decir, en mi caso es C: Users Anhsirk, solo necesita cambiar esto para su cuenta de usuario.

Dar contraseña como androide

. Si no solicita contraseña, su ruta de almacén de claves es incorrecta.

Si todo funciona bien, debería darle el Hashkey a continuación.

enter image description here

La clave correcta se puede obtener de la aplicación misma agregando el siguiente código para tostar el hash de la clave adecuado (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 el nombre de su paquete

I. Crea la depuración de hash clave 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 lanzamiento de hash clave para Facebook

  1. Descargar OpenSSL-0.9.8e_x64
  2. Haga una carpeta OpenSSL en la unidad C
  3. Extraer archivos zip en la carpeta OpenSSL
  4. Inicio -> Ejecutar: CMD (presione Entrar)
  5. (Presione) CD C: Archivos de programa java jdk1.6.0_45 bin. Nota: C: Archivos de programa java jdk1.6.0_45 bin: es ruta a la carpeta JDK en su computadora
  6. (Presione) KeyTool -ExportCert -alias GCI -KeyStore D: carpeta KeyStoreReLease | C: openssl bin openssl sha1 -binary | C: openssl bin openssl base64. NOTA: D: carpeta keyStoreReLease: es ruta a su KeyStorerElease

  7. Ingrese la contraseña del almacén de claves: esta es la contraseña cuando su registro de KeyStorerLease.

    Entonces tendrá un hash clave: JDEHABCDIQEDWAYZ5OW4SJSXLSW =

  8. Inicio de sesión de Facebook. Acceso para administrar aplicaciones. Peque el hash clave en su aplicación en desarrolladores.facebook.com

Forma más sencilla de generar la tecla hash.

Requisito: Clave SHA1

Puedes encontrar la tecla SHA1 ejecutando destacado

Consulte la imagen a continuación.

enter image description here

Después de ejecutar el archivo, se generará su salida que contenga la tecla SHA1 requerida.

enter image description here

Luego ve ahttp://tomeko.net/online_tools/hex_to_base64.php

y pegar tu tecla SHA1

enter image description here

Y finalmente se le requerirá hashkey.

Solución más simple para este problema:

He tenido este problema durante dos meses. Mis hashes clave han sido lindos hasta 9. Hoy finalmente encontré la solución simple:

PASO 1:

Instale el SDK de Facebook que descargó desde la página de desarrollador de Facebook en su teléfono. No instale la aplicación Normal de Facebook. Asegúrese de poder iniciar sesión en Facebook. Luego, cierre sesión.

PASO 2:

Exporte su aplicación con su clave de lanzamiento final como APK, como lo haría al cargarla en PlayStore.

PASO 3:

Coloque el archivo APK en su teléfono a través del cable USB o la palanca USB.

PASO 4:

Instale su aplicación, usando un administrador de archivos: Ejemplo

Paso 5:

Inicie su aplicación e intente iniciar sesión con Facebook. Un diálogo se abrirá y le dirá: "La clave que no se ha encontrado en la consola de desarrolladores de Facebook"

Paso 6:

Escriba la llave.

Paso 7:

Póngalo en su consola de desarrollador de Facebook y guarde. Ahora ya has terminado. Cualquiera que descargue su aplicación, publicada con el almacén de claves usado anteriormente puede iniciar sesión en Facebook.

Disfrutar

Si está lanzando, use el almacén de claves que usó para exportar su aplicación y no el debug.keystore.

La contraseña del certificado de depuración es Android y no Android

Al final :)

Aquí mi historia:

  1. Agregue este código a su actividad principal, después de establecer 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) {
    }
    
  2. ¡Cambie ProjectName a su nombre de paquete!

  3. Firme su aplicación (Android Tools-> Exportar aplicación firmada)
  4. En su actividad principal, donde pega el código de la opción 2, en su diseño cree TextView con ID TextString
  5. Uncomment Dos líneas, que su código de letrero se establecería en TextView 6 Wuolia, ¡tiene su hash, instale la aplicación en su teléfono! ¡Y revisa tu clave hash!
  6. Ahora, cuando sea visible, vaya a la aplicación de Facebook que creó y agregue a [Key Hashes
  7. Tenga en cuenta que el nombre de su paquete debe ser el mismo que en Facebook [Nombre del paquete] en [Key Hashes
  8. Que tengas un lindo día :)

Solución de una línea para generar para Facebook

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

Para generar el hash clave de lanzamiento, debe seguir algunos pasos sencillos.

1) Descargar Openssl

2) Haga 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 desde la carpeta .android en mi caso (c: users system.android) y pegue en la carpeta JDK bin en mi caso (c: archivos de programa 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.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 (su nombre de alias Sing APK Ingrese aquí como mi nombre APK ALIAN Nombre es ABCD) -KeyStore "APK firmado APK Generado APTH Ingrese aquí" | "Openssl bin de la carpeta ruta ingrese aquí" Sha1 - binario | "OpenSSL Bin de la carpeta de la carpeta Ingrese aquí" Base64

7) Ahora debe ingresar contraseña, contraseña = (Ingrese la contraseña de su almacén de claves aquí)

8) Obtiene el almacén de claves que se utilizan para la aplicación de la aplicación de lanzamiento hash

Aunque este hilo es viejo, sin embargo, me gustaría compartir mi experiencia (recientemente comencé a trabajar con Facebook), lo que me parece directamente:

  1. Descargar OpenSSL desde el enlace a continuación:https://code.google.com/p/openssl-for-windows/downloads/list
  2. Descompárselo a una unidad local (por ejemplo, C: OpenSSL)
  3. 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 para OpenSsl.exe (en este ejemplo es "C: openssl bin openssl.exe") con su propia ruta de instalación.

  1. Solicitará contraseña, por ejemplo,

Ingrese la contraseña del almacén de claves: Android

Escriba Android como contraseña como se muestra arriba.

¡Eso es todo! Se le dará una llave larga de 28 caracteres. ¡Salud!

Use el mismo procedimiento para obtener la clave de lanzamiento. Simplemente reemplace el comando con el siguiente y use su alias de llave de liberación.

keytool -exportcert -alias your_release_key_alias -keystore your_release_key_path | "Path for Openssl.exe" Sha1 -Binary | OpenSSL Base64

Generar la llave hash de depuración

  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 la llave hash de lanzamiento

 keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64

Gran publicación de blog sobre el tema

Extraer la tecla hash de la tecla .p12

  1. Abra terminal o línea de comando y navegue hasta donde está su tecla .p12.
  2. Escriba: "KeyTool -V -List -KeyStore MyCert.p12 -StoreType PKCS12 ″ donde mycert.p12 es el nombre de archivo de su clave .p12.
  3. Ingrese la contraseña del almacén de claves (la que usó cuando se exportó la tecla .p12). 4. Copie el texto de bytes de firma de huellas digitales SHA1.
  4. Se necesitan los bytes en la firma de huellas digitales SHA1 para escribir el archivo "sha1.bin". Puede usar un editor hexadecimal para pegar los bytes que copió. Luego, guarde el archivo como "sha1.bin".
  5. Abra la terminal nuevamente y escriba: "OpenSSL Base64 -in Sha1.Bin -Out Base64.txt".
  6. El "base64.txt" resultante contendrá el hash clave que se necesita para Facebook.

Gran y simple editor hexadecimal para Mac: hexfiend

OpenSSL debe preinstalarse en Mac, y aquí está el enlace para la versión de Windows.

Enlace

Intente pasar la contraseña para 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

Pude realizar la tarea solicitada con algunas de las soluciones aquí, pero pensé para mí mismo, chico que es estúpido ... ¿por qué no escribir un pequeño código Java que lo haga y empacarlo en un frasco, así que lo hice? ..

A Enlace para descargar el frasco

Funciona en Windows 8 ... no intenté ningún otro sistema operativo.

Hola a todos, es mi historia, cómo me firman tiene una llave para facebook

En primer lugar, solo tiene copiar estos 2 métodos en su 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();
}

** FUNCIÓN DE LLAME GetAppAppkeyHash () Desde su metododio OnCreate Si desea un hash firmado, luego haga una instalación firmada de compilación firmada Build and Ej. APK firmado **

Si su contraseña = Android está mal, entonces coloque la contraseña de su PC que funciona para mí.

Y para generar keyhash intente este enlace Aquí

Lo único que funciona para mí es usar la contraseña. android. ¿Por qué no se menciona eso en ninguna guía?

Use esto en Kotlin para la clave de impresión hash 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){

    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top