Come creare Android Key Hash di Facebook?


182

Non capisco affatto questo processo. Sono stato in grado di navigare nella cartella contenente il keytool in Java SDK. Anche se continuo a ricevere l'errore openssl non riconosciuto come comando interno o esterno. Il problema è anche se riesco a farlo funzionare, cosa farei e con cosa dopo?


se stai utilizzando l'ultimo sdk di Facebook e se hai inserito perfettamente la tua API di Facebook, quindi quando accedi fai clic su Accedi in Facebook, quindi nel tuo logcat viene stampata la chiave hash ..
Mehul Ranpara,

per generare l'hash della chiave sul tuo computer locale, esegui l'utilità keytool di Java (che dovrebbe trovarsi sul percorso della tua console) contro il keystore di debug di Android. Questo è, per impostazione predefinita, nella tua directory home .android). Su OS X, eseguire: keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1 -binary | openssl base64 Su Windows, utilizzare: - keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% \. android \ debug.keystore | openssl sha1 -binary | openssl base64
Rakesh,

Perché qualcuno dovrebbe voler creare una chiave di debug?
Anders Lindén,

Ho generato l'hash della chiave ma non so dove mettere quella chiave, mi guideresti? Sto eseguendo Android Studio su Ubuntu.
Apurva,

Risposte:


242

Ecco cosa devi fare -

Scarica openSSl da Code Extract it. crea una cartella OpenSSL in C: / e copia qui il codice estratto.

rileva il percorso del file debug.keystore. Se non lo hai trovato, esegui una ricerca in C: / e utilizza il percorso nel comando nel passaggio successivo.

rileva il tuo percorso keytool.exe e vai a quel dir / nel prompt dei comandi ed esegui questo comando in 1 riga-

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

chiederà la password, mettiamo Android tutto qui. otterrai un key-hash


quando chiede una password posso mettere tutto quello che voglio?
Somk,

5
@Max, la password predefinita è android.
Jamapag,

2
l'hash delle chiavi non corrisponde ad alcun hash delle chiavi memorizzato android, non funziona
Boldijar Paul,

1
Per prima cosa crea un keystore andando su Build -> Build Apk dal tuo studio. fornire un nome, una password, ecc. Conservarlo come file .jks in una cartella facilmente accessibile. Ora copia il percorso e genera la chiave sostituendo quel percorso nella risposta sopra menzionata.
Buggydroid,

1
Mi mostra un errore: "... Le espressioni sono consentite solo come primo elemento di una pipeline. Alla riga: 1 carattere: 184 ... Token imprevisto 'sha1' nell'espressione o nell'istruzione. ... Le espressioni sono consentite solo come il primo elemento di una pipeline ... Token imprevisto 'base64' in espressione o istruzione. + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: ExpressionsMustBeFirstInPipeline "
sviluppatore android

175

Per Linux e Mac

Terminale aperto:

Per il debug Build

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

Troverai debug.keystore nella cartella ".android". Copialo e incollalo sul desktop ed esegui il comando sopra.

Per il rilascio Build

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

NOTA: assicurarsi che in entrambi i casi venga richiesta una password. Se non richiede una password, significa che qualcosa non va nel comando. La password per debug.keystore è " android " e per il rilascio devi inserire la password che hai impostato durante la creazione del keystore .


3
Per essere chiari, la password è vuota. Basta premere <invio> quando richiesto.
Tom Redman,

Ho generato l'hash della chiave ma non so dove mettere quella chiave, mi guideresti? Sto eseguendo Android Studio su Ubuntu.
Apurva,

1
Questa nota: "NOTA: assicurati che in entrambi i casi richieda una password. Se non richiede una password, significa che qualcosa non va nel comando." era essenziale per risolvere il problema
Bleno Silva il

grazie per avermi salvato la vita. sto scrivendo continuamente la mia password mac per la password del keystore e mi sono reso conto che era sbagliato
Lucky Angelo

1
Anche chiedere una password non significa che tutto sia ok (password errata, alias chiave errato). Esegui da keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath>solo all'inizio, per vedere se tutto è ok. Inoltre, quando viene convogliato, keytool è in modalità non interattiva e mostra la password in testo semplice quando lo si inserisce. Quindi è meglio scrivere un piccolo script che esegua i comandi separatamente.
Pierre,

98

Per favore prova questo:

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = pContext.getPackageManager().getPackageInfo(pContext.getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String hashKey = new String(Base64.encode(md.digest(), 0));
                Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
            }
        } catch (NoSuchAlgorithmException e) {
            Log.e(TAG, "printHashKey()", e);
        } catch (Exception e) {
            Log.e(TAG, "printHashKey()", e);
        }
    }

Ho generato l'hash della chiave ma non so dove mettere quella chiave, mi guideresti? Sto eseguendo Android Studio su Ubuntu.
Apurva,

questa è la strada da percorrere
Tintinabulator Zea,

1
Funziona se si chiama pContext.getPackageInfo. O semplicemente rimuoverlo da una funzione e chiamarlo in onCreate di qualsiasi attività.
Dpedrinha,

1
Questo ora sembra essere getPackageManager (). GetPackageInfo ([your-nome_pacchetto], PackageManager.GET_SIGNATURES)
Fino

@Apurva Puoi metterlo in Android SharedPreferences in caso di utilizzo futuro.
Maddy,

49

OpenSSL: devi installarlo se non è preinstallato con il tuo sistema operativo (es. Windows non lo ha preinstallato) . Come installarlo dipende dal tuo sistema operativo (per Windows controlla il link fornito da coder_For_Life22).

Il modo più semplice senza armeggiare è copiare il file binario openssl.exe nel percorso del tuo keytool se sei su Windows. Se non si desidera farlo, è necessario aggiungerlo alla PATHvariabile di ambiente. Quindi eseguire il comando fornito nei documenti.

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

Si noti che l'argomento dopo -keystorepunta al keystore di debug. Questa posizione dipende anche dal sistema operativo in uso. Dovrebbe essere in una delle seguenti posizioni:

  • Windows Vista o 7 - C: \ Users \ .android \ debug.keystore
  • Windows XP - C: \ Documents and Settings \ .android \ debug.keystore
  • OS X e Linux - ~ / .android / debug.keystore

Se hai fatto tutto nel modo giusto, dovresti ricevere una password. Questo è androidper il certificato di debug. Se la password è corretta, la console stampa un hash (caratteri e numeri alquanto casuali).

Prendi quello e copialo nel android key hashcampo all'interno delle preferenze della tua app su Facebook. Per arrivarci, vai su developers.facebook.com/apps , seleziona la tua app, vai Edit settingse scorri verso il basso. Dopodiché, attendi qualche minuto per rendere effettive le modifiche.


Ho eseguito questo in cmd e ha prodotto un elenco molto lungo di caratteri che sembrano un hash che termina con un segno = quindi niente $ keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ .android \ debug.keystore" | "C: \ OpenSSL \ bin \ openssl" sha1 -binary | "C: \ OpenSSL \ bin \ openssl" base64
Somk,

Sembra corretto L'ho appena testato sulla mia macchina, per me era lungo 28 caratteri, solo per darti un'idea. Ora basta copiarlo e stai bene. :)

non mi è stato richiesto di utilizzare Android Pharse però. Scusa, sono lento?
Somk,

Ad essere sincero, non sono sicuro del perché non ti sia stato richiesto. Ma mi sembra corretto. Voglio dire, se avessi fatto qualcosa di sbagliato, dovrebbe invece esserci un messaggio di errore. Basta copiarlo e vedere se funziona. Puoi testare alcune delle query sui grafici con Graph API Explorer . Seleziona la tua app in alto e vedi se ottieni risultati validi. Dovrebbe emettere un errore se c'è qualcosa di sbagliato. Modifica: e non c'è niente di sbagliato nell'essere lenti. Non abbiamo fretta. :)

24

per generare l'hash della chiave sul tuo computer locale, esegui l'utilità keytool di Java (che dovrebbe trovarsi sul percorso della tua console) contro il keystore di debug di Android. Questo è, per impostazione predefinita, nella tua directory home .android). Su OS X, esegui:

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

Su Windows, utilizzare: -

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

spero che questo ti possa aiutare

Ref - sito Facebook per sviluppatori


Ho generato l'hash della chiave ma non so dove mettere quella chiave, mi guideresti? Sto eseguendo Android Studio su Ubuntu.
Apurva,

19

Puoi semplicemente usare una riga javascript nella console del browser per convertire una chiave della mappa esadecimale in base64. Aprire la console di ultima versione del browser (F12 su Windows) e incolla il codice e sostituire il SHA-1, SHA-256mappa esagonale che Google Play offre in Release Managment> App signing:

> btoa('a7:77:d9:20:c8:01:dd:fa:2c:3b:db:b2:ef:c5:5a:1d:ae:f7:28:6f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "p3fZIMgB3fosO9uy78VaHa73KG8="

1
Sei un
vero toccasana

SHA-1 era quello.
Travo,

19

Ecco i dettagli completi (per Windows)

1. Scarica OpenSSl 3o o 4o (con e funzionerà meglio) in base al tuo sistema 32 bit o 64 bit.

2. Estrarre lo zip scaricato all'interno della directory C.

3. Apri la cartella estratta nel cestino e copia il percorso, dovrebbe essere qualcosa del tipo C:\openssl-0.9.8k_X64\bin\openssl (aggiungi \ openssl alla fine)

4. (Ottieni il percorso della cartella bin di Jdk, se sai come, ignoralo).

Apri android studio ~ file ~ Struttura del progetto (ctrl + alt + maiusc + s), seleziona la posizione dell'SDK nel pannello laterale sinistro, copia la posizione del JDK e aggiungi / bin ad esso

Quindi la posizione finale di JDK sarà simile C:\Program Files\Android\Android Studio\jre\bin

stiamo seguendo questo metodo per ottenere la posizione di Jdk perché potresti usare jdk incorporato come me

inserisci qui la descrizione dell'immagine

ora hai la posizione OpenSSl e la posizione JDK

5. ora abbiamo bisogno della posizione del keystore di debug, per quella C ~> Users ~> YourUserName ~> .android dovrebbe esserci un nome di file debug.keystore, ora copia la posizione del percorso, dovrebbe essere qualcosa come

C:\Users\Redman\.android\debug.keystore

6. ora apri il prompt dei comandi e digita command

cd YourJDKLocationFromStep4  

nel mio caso

 cd "C:\Program Files\Android\Android Studio\jre\bin"

7. ora costruisci il seguente comando

keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

nel mio caso il comando sarà simile

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64

ora inserisci questo comando nel prompt dei comandi, se hai fatto qualcosa di giusto ti verrà chiesta la password (la password è Android)

Enter keystore password:  android

questo è tutto, ti verrà dato il Key Hash, basta copiarlo e usarlo

Per KeyHash firmato costruisci il seguente comando

keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

inserisci la password del tuo keystore, se inserisci una password errata, otterrai un KeyHash errato

NOTA

Se per qualche motivo se dà un errore in qualche percorso, avvolgi quel percorso tra virgolette doppie. Anche la shell di alimentazione di Windows non funzionava bene per me, ho usato git bash (o utilizzare il prompt dei comandi).

esempio

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64

1
Grazie mille, questa è una guida molto dettagliata per i principianti!
Pablo Quemé,

@TamimProduction prova la stessa procedura sopra con la versione k di openssl e vedi code.google.com/archive/p/openssl-for-windows/downloads
Manohar Reddy

@TamimProduction se si inserisce una password errata, verrà restituito un keyhash sbagliato. hai anche creato di nuovo l'apk dopo aver eliminato il keystore?
Manohar Reddy,

@TamimProduction scarica e installa l'applicazione Facebook, accedi all'applicazione Facebook. apri la tua app ed esegui l'accesso tramite facebook. Ti fornirà l'hash chiave nell'applicazione Facebook, controlla se è uguale al tuo
Manohar Reddy,


16

C'è anche una soluzione breve. Basta eseguire questo nella tua app:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));

Uno più lungo che non necessita dell'SDK FB (basato su una soluzione qui ):

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

Il risultato dovrebbe terminare con "=".


1
Ho notato che il mio hash chiave contiene un '_' che non è consentito da FB. Per usare l'hash ho dovuto cambiarlo in '/'.
Abdelalim Hassouna,

La funzione di Facebook ha restituito la mia chiave poiché -AAAAAAAA_AAAAAA-AAAAAAAAAAciò non è consentito da Facebook, printHashKey ha restituito la chiave in un formato valido+AAAAAAAA/AAAAAA+AAAAAAAAAA=
GrafOrlov,

@GrafOrlov Che strano. Forse hanno un bug su una nuova versione dell'SDK FB. Dovresti segnalarlo a loro.
sviluppatore Android il

9

Per Windows:

  1. apri il prompt dei comandi e incolla sotto il comando

keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .android \ debug.keystore | openssl sha1 -binary | openssl base64

  1. Inserisci la password: android -> Premi Invio

  2. Copia chiave hash generata -> Accedi a Facebook con il tuo account sviluppatore

  3. Vai alla tua app di Facebook -> Impostazioni -> Incolla il tasto Hash nell'opzione "Key hash" -> salva le modifiche.

  4. Ora prova la tua app Android con Facebook Accedi / Condividi ecc.


Ho generato l'hash della chiave ma non so dove mettere quella chiave, mi guideresti? Sto eseguendo Android Studio su Ubuntu.
Apurva,

Ciao, sono in grado di generare la chiave hash tramite il codice nella mia attività principale, ma quella chiave hash generata funziona solo su un singolo dispositivo. Quando installo lo stesso apk in un altro dispositivo ed eseguo che mostra un errore di chiave hash non valido. C'è qualcosa che mi manca.
Deepak,

8

Dall'API 26, puoi generare i tuoi HASH KEYS usando il seguente codice in KOTLIN senza bisogno dell'SDK di Facebook.

fun generateSSHKey(context: Context){
    try {
        val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            val hashKey = String(Base64.getEncoder().encode(md.digest()))
            Log.i("AppLog", "key:$hashKey=")
        }
    } catch (e: Exception) {
        Log.e("AppLog", "error:", e)
    }

}

inserisci qui la descrizione dell'immagine


Vuoi dire che inserisco il tuo codice class MainActivity: FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(this) } }
asdfasdf il

6

È così che ho ottenuto il mio:

private class SessionStatusCallback implements Session.StatusCallback {
        @Override
        public void call(Session session, SessionState state, Exception exception) {

            if (exception != null) {
                new AlertDialog.Builder(FriendActivity.this)
                        .setTitle(R.string.login_failed_dialog_title)
                        .setMessage(exception.getMessage())
                        .setPositiveButton(R.string.ok_button, null)
                        .show();
            }

Pertanto, quando si tenta di accedere senza la chiave, si verificherà un'eccezione. Facebook ha inserito la chiave DESTRA in questa eccezione. Tutto quello che devi fare è copiarlo.


Ho generato l'hash della chiave ma non so dove mettere quella chiave, mi guideresti? Sto eseguendo Android Studio su Ubuntu.
Apurva,

6

Se hai già caricato l'app su Play Store, puoi generare la chiave hash come segue:

1) Vai a Gestione delle versioni qui

2) Selezionare Gestione delle versioni -> Firma app

3) È possibile visualizzare la chiave SHA1 in un certificato di firma app in formato esadecimale.


4) Copia SHA1 in formato esadecimale e convertilo in formato base64, puoi usare questo link per farlo senza SHA1: parte dell'esagono.


5) Vai alla console per sviluppatori di Facebook e aggiungi la chiave (dopo la conversione in base 64) nelle impostazioni -> base -> hash chiave.



3

Scarica open ssl :

Quindi aggiungi openssl \ bin alle variabili di sistema del percorso:

Il mio computer -> proprietà -> Configurazioni avanzate -> Avanzate -> Variabili di sistema -> sotto le variabili di sistema trovano il percorso e aggiungo questo ai suoi finali:; yourFullOpenSSLDir \ bin

Ora apri una riga di comando nella cartella jdk \ bin C: \ Programmi \ Java \ jdk1.8.0_40 \ bin (su Windows tieni premuto MAIUSC e fai clic con il pulsante destro del mouse -> apri riga di comando qui) e utilizza:

keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64

E copia il numero di 28 lunghezze che genera dopo aver dato la password.


Non ho visto che la risposta originale abbia già il link openssl. Ma è ancora utile per la variabile di sistema.
sagits

Ho generato l'hash della chiave ma non so dove mettere quella chiave, mi guideresti? Sto eseguendo Android Studio su Ubuntu.
Apurva,

Naturalmente, sei sicuro di aver generato il numero di lunghezza 28? In tal caso, ora devi andare sul sito dello sviluppatore di Facebook (cerca su google) e creare una nuova applicazione, sotto le impostazioni, puoi aggiungere una nuova app Android, lì incollare il keyhash e il nome dell'attività (dove si trova il codice di accesso ). C'è un tutorial su questo anche su Facebook
sagits

Grazie per la rapida risposta, ci proverò a breve
Apurva

3

Esegui questo nella tua app:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");

O questo:

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

E poi guarda i registri.

Il risultato dovrebbe terminare con "=".

La soluzione si basa qui e qui .


3

MODO FACILE -> Non installare openssl -> USA GIT BASH!

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

La password predefinita è "android"

Molti di noi hanno installato Git Bash, quindi questo è il mio modo preferito.


3

questo aiuterà anche i neofiti.

aggiungendo ulteriori dettagli alla risposta di @ coder_For_Life22.

se questa risposta ti aiuta a non dimenticare di votare. ci motiva.

per questo devi già conoscere il percorso del file keystore dell'app e la password

per questo esempio, considera che la chiave è memorizzata in "c: \ keystorekey \ new.jks"

1. apri questa pagina https://code.google.com/archive / p / openssl-for-windows / download

2. scarica il file zip a 32 o 64 bit secondo il tuo sistema operativo Windows.

3. estrai il file scaricato dove vuoi e ricorda il percorso.

4. per questo esempio consideriamo che hai estratto la cartella nella cartella di download.

quindi l'indirizzo del file sarà "C: \ Users \ 0 \ Downloads \ openssl-0.9.8e_X64 \ bin \ openssl.exe";

5. ora sulla tastiera premere windows + tasto r.

6. questo aprirà la casella di esecuzione.

7. digitare cmd e premere Ctrl + Maiusc + Invio .

8. questo aprirà il prompt dei comandi come amministratore.

9. qui vai alla cartella bin di java:

se usi jre fornito da Android Studio troverai il percorso come segue:
a. apri Android Studio.
b. file-> struttura del progetto
c. nel riquadro sinistro, fare clic su "Posizione SDK"
d. nel riquadro destro, sotto "Posizione JDK" è il percorso jre.
e. aggiungi "\ bin" alla fine di questo percorso poiché il file "keytool.exe", di cui abbiamo bisogno, si trova all'interno di questa cartella.
per questo esempio considero,
"C: \ Programmi \ Java \ jre-10.0.2 \ bin"
se hai installato java a 32 bit sarà in
"C: \ Programmi (x86) \ Java \ jre-10.0.2 \ bin"
10. ora con i percorsi precedenti eseguire il comando come segue:

keytool -exportcert -alias androiddebugkey -keystore "c:\keystorekey\new.jks" | "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary |"C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" base64
  1. Ti verrà richiesta la password, fornisci la password che hai fornito durante la creazione della chiave del keystore.

    !!!!!! questo ti darà la chiave

errori: se si ottiene:
---
'keytool' non viene riconosciuto come comando interno o esterno
---
significa che Java è installato altrove.


3

passaggio 1-> C: \ Programmi \ Java \ jdk1.6.0_43 \ bin>

Passaggio 2-> keytool -list -v -keystore C: \ Users \ leon \ .android \ debug.keystore -alias androiddebugkey -storepass android -keypass android

hai valore SHA1 fai clic su questo link per convertire il valore SHA1 in HASH KEY

Sono sicuro al 100% che questo link ti aiuterà



2

Puoi ottenere tutte le tue impronte digitali da https://console.developers.google.com/projectselector/apis/credentials
E utilizzare questo codice Kotlin per convertirlo in keyhash:

fun main(args: Array<String>) {
    listOf("<your_production_sha1_fingerprint>",
            "<your_debug1_sha1_fingerprint>",
            "<your_debug2_sha1_fingerprint>")
            .map { it.split(":") }
            .map { it.map { it.toInt(16).toByte() }.toByteArray() }
            .map { String(Base64.getEncoder().encode(it)) }
            .forEach { println(it) }
}

1

https://developers.facebook.com/docs/android/getting-started/

4.19.0 - 25 gennaio 2017

SDK di Facebook

Modificato

Facebook SDK è ora inizializzato automaticamente all'avvio dell'applicazione. Nella maggior parte dei casi non è più necessaria una chiamata manuale a FacebookSDK.sdkInitialize (). Vedi la guida all'aggiornamento per maggiori dettagli.

Per il debug

try {
    PackageInfo info = getPackageManager().getPackageInfo(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));
    }
} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

1

Basta eseguire questo codice in OnCreateView o OnStart Actvity e questa funzione restituisce un hash chiave di sviluppo .

private String generateKeyHash() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = (MessageDigest.getInstance("SHA"));
            md.update(signature.toByteArray());
            return new String(Base64.encode(md.digest(), 0));
        }
    }catch (Exception e) {
        Log.e("exception", e.toString());
    }
    return "key hash not found";
}

0

Avevo lo stesso identico problema, non mi veniva chiesta una password e sembra che avessi il percorso sbagliato per il file keystore.

Infatti, se il keytool non trova il keystore che hai impostato, ne creerà uno e ti darà la chiave sbagliata poiché non sta usando quella corretta.

La regola generale è che se non viene richiesta una password, viene generata la chiave sbagliata.


Ho generato l'hash della chiave ma non so dove mettere quella chiave, mi guideresti? Sto eseguendo Android Studio su Ubuntu.
Apurva,

0

Puoi usare questo apk

1.first install the app from the Google play store
2.install the above apk
3.launch the apk and input the package name of your app
4.then you will get the hash code you want

@Elynad È cinese: D
armnotstrong


0

keytool -exportcert -alias androiddebugkey -keystore "C: \ Users ** Deepak **. android \ debug.keystore" | " C: \ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binary | " C: \ Users \ Deepak \ ssl \ bin \ openssl" base64

2 Modifiche al comando precedente 1.Deepak === Sostituisci con il tuo sistema USERNAME 2.C: \ Users \ Deepak \ ssl === sostituisci il tuo percorso SSL aperto

eseguire questo comando e ottenere un output in questo modo

C: \ Users \ Deepak> keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ D eepak.android \ debug.keystore" | "C: \ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binary | "C: \ Users \ Deepak \ ssl \ bin \ openssl" base64 Immettere la password del keystore: ****** ga0RGNY ****************** =


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.