2012-04-06 5 views
6

En el tutorial androide Facebook se nos dice que utilizar siguiente código para crear un hash clave:Cómo crear un hash de clave de Facebook?

herramienta de claves -exportcert -alias androiddebugkey -keystore ~ ​​/ .android/debug.keystore | openssl sha1 -binary | openssl base64

¿Es este el código exacto para usar en todas las situaciones? Por ejemplo, en lugar de ~/.android/debug.keystore ¿debería ser algo así como C:/folderone/foldertwo/.android/debug.keystore?

Como puede ver, no estoy seguro de si se requieren comillas o no, si se requieren o no rutas completas.

¿Alguien puede dar un ejemplo del mundo real?

Ver
https://developers.facebook.com/docs/mobile/android/build/#sso

+0

necesita tener openssl de Google ... siga los pasos que se indican en el [link] [1] [1]: http://stackoverflow.com/questions/4388992/key-hash- para-android-facebook-app/6665263 # 6665263 –

+0

Puede ver un ejemplo real aquí http://stackoverflow.com/questions/9977492/android-facebook-sdk-keystore-not-asking-or-password/10026147#10026147 – dimetil

+0

Deberías encontrar la respuesta de Avi [aquí.] (Http://stackoverflow.com/a/6665263/5861880) – abosamy

Respuesta

2

en Eclipse, ventana ->preferencias ->Android ->acumulación ->almacén de claves predeterminado de depuración, copiar la ruta para reemplazar el ~/.android/debug.keystore

11

Puede crear de esta manera

keytool -exportcert -alias androiddebugkey -keystore c:\Users\<your windows default user>\.android\debug.keystore | openssl sha1 -binary | openssl base64 

Introduzca la contraseña del almacén de claves: androide

+0

El enlace está muerto – larham1

+0

Cambios leves aquí. En primer lugar, si su openssl.exe no está en la RUTA, no podrá llamarlo de esta manera (lo mismo vale para keytool). En segundo lugar, la última parte es "openssl base64". – Asim

+0

MacOS: keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android/debug.keystore | openssl sha1 -binary | openssl base64 Contraseña: android –

1

que tenía el mismo problema, me paso un par de horas para encontrar una solución, pero en realidad el Facebook SDK proporciona la solución por sí mismo.

en la clase DialogListener he modificado el método onFacebookError:

@Override 
public void onFacebookError(FacebookError error) { 
    Log.d("myTag",error.getmessage); 
} 

Ejecutar la aplicación (que era señal con la misma clave que utilizo para el mercado), y en LogCat será un mensaje bajo esta etiqueta con la clave correcta.

También creamos un proyecto simple que hace todo el trabajo y devuelve la clave correcta en un cuadro de alerta y en LogCat. Puede encontrarlo en our blog.

16

tratar

try { 
PackageInfo info = getPackageManager().getPackageInfo("com.eatapp", 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) { 

} 

en su actividad principal :-) Esta es la única solución que funciona para mí para Android SDK 3.0

+1

Incluye: importar android.content.pm.PackageInfo; importar android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; importar android.content.pm.Signature; importar android.util.Base64; importar android.util.Log; – Alireza

1

herramienta de claves -exportcert -alias androiddebugkey -keystore "camino debug.keystore" | openssl sha1 -binary | base 64 openssl

Si usted no tiene las variables de entorno de configuración para SSL abierta y SDK de Java que poner ruta de la carpeta bin del JDK en lugar de la herramienta de claves y la ruta de OpenSSL en lugar de OpenSSL y no olvidar de poner comillas dobles para su camino

ex- "C: \ Archivos de programa \ Java \ jdk1.5.0_11 \ bin" -exportcert -alias androiddebugkey -keystore "C: \ Users \ amin.android \ debug.keystore" | "F: \ openssl \ binsha1 \ openssl.exe" -binary | "F: \ openssl \ binsha1 \ openssl".exe" base 64

3
/** 
    * Generates the hash key used for Facebook console to register app. It can also be used for other sdks) Method copied from: https://developers.facebook.com/docs/android/getting-started/ 
    */ 
    public static String printHashKey(Context ctx) { 
     // Add code to print out the key hash 
     try { 
      PackageInfo info = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), PackageManager.GET_SIGNATURES); 
      for (Signature signature : info.signatures) { 
       MessageDigest md = MessageDigest.getInstance("SHA"); 
       md.update(signature.toByteArray()); 
       return Base64.encodeToString(md.digest(), Base64.DEFAULT); 
      } 
     } catch (NameNotFoundException e) { 
      return "SHA-1 generation: the key count not be generated: NameNotFoundException thrown"; 
     } catch (NoSuchAlgorithmException e) { 
      return "SHA-1 generation: the key count not be generated: NoSuchAlgorithmException thrown"; 
     } 

     return "SHA-1 generation: epic failed"; 
    } 
1

Una opción fuerza bruta es sólo seguir adelante y tratar de compartir algo de su aplicación. Mi aplicación a continuación, muestra una página de Facebook con la tecla que está tratando de igualar. A continuación, sólo puede copiar este llave y ponerlo en la página 'Configuración' su Facebook en su desarrollador Facebook cuenta.

No es ideal, pero en caso de necesidad, puede ser útil.

2

al tener el error en el registro, cuando se trata de acceder a Facebook, busque algo que se parezca a:

Invalid key hash. The key hash *** does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/565561836797777 

donde "***" es la clave que debe usar.

Cuestiones relacionadas