2012-04-06 18 views
6

Nella Facebook esercitazione Android ci viene detto di utilizzare seguente codice per creare un hash chiave:Come creare un hash di chiave Facebook?

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

È questo il codice esatto da utilizzare in tutte le situazioni? Ad esempio invece di ~/.android/debug.keystore dovrebbe qualcosa come C:/folderone/foldertwo/.android/debug.keystore?

Come si può vedere, non sono sicuro se le virgolette siano obbligatorie o meno, se sono necessari o meno percorsi completi!

Qualcuno è in grado di fornire un esempio del mondo reale?

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

+0

bisogno avete OpenSSL da google ... seguire i passi indicati nel [link] [1] [1]: http://stackoverflow.com/questions/4388992/key-hash- per-android-facebook-app/6665263 # 6665263 –

+0

Puoi vedere un esempio reale qui http://stackoverflow.com/questions/9977492/android-facebook-sdk-keystore-not-asking-or-password/10026147#10026147 – dimetil

+0

Dovresti trovare la risposta di Avi [qui.] (Http://stackoverflow.com/a/6665263/5861880) – abosamy

risposta

2

in Eclipse, finestra ->preferenze ->Android ->accumulo ->predefinita di debug chiavi, copiare il percorso per sostituire la ~/.android/debug.keystore

11

È possibile creare in questo modo

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

Immettere la password dell'archivio chiavi: Android

+0

Il link è morto – larham1

+0

Lievi modifiche qui. Prima di tutto, se il tuo openssl.exe non si trova nel PATH, non sarai in grado di chiamarlo in questo modo (lo stesso vale per keytool). In secondo luogo, l'ultima parte è "openssl base64". – Asim

+0

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

1

Ho avuto lo stesso problema, ho trascorrere un paio di ore per trovare una soluzione, ma in realtà il Facebook SDK fornisce la soluzione di per sé.

nella classe DialogListener ho modificato il metodo onFacebookError:

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

Eseguire l'applicazione (che era il segno con la stessa chiave che uso per il mercato), e sulla LogCat sarà un messaggio sotto questo tag con la chiave corretta.

Abbiamo anche creato un progetto semplice che esegue tutto il lavoro e restituisce la chiave corretta in una casella di avviso e in LogCat. Puoi trovarlo su our blog.

16

provare

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) { 

} 

nella vostra attività principale :-) Questa è l'unica soluzione che funziona per me per Android SDK 3.0

+1

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

1

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

se non si sono impostate le variabili di ambiente per ssl aperto e java sdk piuttosto che il percorso della cartella bin di jdk al posto di keytool e il percorso openssl al posto di openssl e non dimenticare di inserire virgolette per il percorso

ex- "C: \ Programmi \ 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" base64

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

Un'opzione forza bruta è di andare avanti e cercare di condividere qualcosa dalla tua app. La mia app visualizza una pagina di Facebook con la chiave che sta cercando di abbinare. Poi si può solo copiare questo chiave e metterlo in pagina la tua Facebook 'Impostazioni' sul tuo sviluppatore account Facebook.

Non è l'ideale, ma in un pizzico può essere utile.

2

quando avere l'errore nel registro, quando si cerca di accedere a Facebook, cerca qualcosa che assomigli 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 

dove "***" è la chiave che è necessario utilizzare.

Problemi correlati