kutombawewe.net

hash della chiave non valida per l'integrazione di Android Android

ciao a tutti in una delle mie app ho bisogno di ottenere i dati di fb ... lo sto facendo .. 

Ho creato ID app effettua correttamente il log in, ma dopo aver effettuato il log in, accesso mi dà 

screen-shot of invalid key hash error facebook

Cosa c'è di sbagliato che sto facendo? Si prega di suggerire Sto usandoFacebook sdk... Ho installato Facebook nel mio telefono ... questo funziona bene in emulatore che non ha installato un'applicazione di Facebook installata 

questo è il mio codice

 if (FB_APP_ID == null) {
            Builder alertBuilder = new Builder(this);
            alertBuilder.setTitle("Warning");
            alertBuilder.setMessage("A Facebook Applicaton ID must be " +
                    "specified before running this example: see App.Java");
            alertBuilder.create().show();
        }

        // Initialize the dispatcher
        Dispatcher dispatcher = new Dispatcher(this);
        dispatcher.addHandler("login", LoginHandler.class);
        dispatcher.addHandler("stream", StreamHandler.class);
        dispatcher.addHandler("logout", LogoutHandler.class);

        // If a session already exists, render the stream page
        // immediately. Otherwise, render the login page.
        Session session = Session.restore(this);
        if (session != null) {
            dispatcher.runHandler("stream");
        } else {
            dispatcher.runHandler("login");
        }
157
Android

La chiave di hash di generazione è sbagliata. È possibile ottenere la chiave hash utilizzando due passaggi. Uno è attraverso il comando Prompt. Un altro è attraverso la codifica. Hash key through command Chiedi di lavorare solo la prima volta. Non conosco la ragione. Ho anche avuto lo stesso problema. Così ho provato attraverso programmaticamente.

Segui questa procedura:

Incolla il seguente codice in oncreate().

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

}

Modifica "com.example.packagename" con il nome del tuo pacchetto nella codifica di cui sopra senza fallo (puoi trovare il nome del tuo pacchetto nel file Manifest di Android).

Esegui la tua applicazione. Vai all'attività in cui hai incollato il codice precedente. Nel logcat cerca "KeyHash". Puoi trovare un hash chiave. Copia l'hash della chiave e vai alla pagina del dashboard dell'applicazione Facebook. Vai alle impostazioni e inserisci i dettagli come nell'immagine a soffietto.

enter image description here

Una volta che hai finito il passaggio precedente. Riavvia l'app di nuovo ora puoi accedere a Facebook . Per ulteriori dettagli sull'hash chiave, controlla il link

Se aggiungi una informazione errata nella pagina delle impostazioni significa che darà qualche errore. quindi usa le informazioni corrette lì. E anche se il pubblico (diverso da te) ha bisogno di utilizzare la tua applicazione significa che è necessario abilitare il permesso(change "yes" in the "Status & Review" next to setting).

254

Se stai affrontando questo problema, metti questa chiave nel tuo developer.facebook.com

 enter image description here

Quindi assicurati che la tua app sia live attiva 

developer.facebook.com

Questo cerchio verde indica che l'app è in diretta

 enter image description here

Se non lo è, segui questi due passaggi per rendere la tua app in diretta 

Passaggio 1 Vai all'applicazione -> impostazione => e aggiungi Email contatto e applica le modifiche di salvataggio

Setp 2 Quindi goto App Review opzione e assicurarsi che questo interruttore sia Sì ho aggiunto una schermata

 enter image description here

Nota: Se si desidera copiare hashkey, selezionare BlueServiceQueue in Logcat.

106
Arpit Patel

Se stai utilizzando la firma dell'app per Google Play:

Apri la sezione Firma app in Google Play Console e ottieni SHA1 di certificato di firma app, poi convertilo in base64, ad esempio con questo strumento: http://tomeko.net/online_tools/hex_to_base64.php?lang=it

 console screenshot

 convert to base64 screenshot

106
Rafal Malek

Ho avuto lo stesso problema. Ero sicuro che fosse dovuto a un errore molto piccolo e sì era !!!! Ho trovato la soluzione.

Quando ho generatodebughash key nel mio computer, ho inserito la password del mio sistema. Ma la password dovrebbe essere la seguente:
Immettere la password del keystore: "Android"
Questo era l'unico problema nel mio caso.

----- Per generareDebugkey hash, usa questo comando -

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

Inserisci la password del keystore: 'Android' 

----- Per generareRilasciaretasto cancelletto, usare questo comando -

keytool -exportcert -alias "alias di keystore" -keystore "Il percorso del keystore durante la firma dell'app" | openssl sha1 -binary | openssl base64

Fornire la password del keystore dopo aver eseguito questo comando.

68
Akash Bisariya

Ho avuto lo stesso problema. Ho fatto una breve ricerca sulle possibili ragioni di questo strano comportamento e ho trovato quanto segue:

  • Durante la prima esecuzione di una nuova app di Facebook, consentirà la connessione/login anche se non si specificano gli hash dei tasti.

  • Per me, il tutorial fornito da Facebook non ha generato l'hash della chiave corretta, perché stava dando la configurazione sbagliata. Durante l'esecuzione:

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

assicurati di controllare tutte le proprietà - HOMEPATH, l'esistenza del keystore, ecc. Forse devi anche fornire la password.

  • Ciò che ha generato la configurazione corretta è stata la soluzione suggerita da @Mahendran.

  • Inoltre, se vedi l'errore originariamente pubblicato ( http://i.stack.imgur.com/58q3v.png ), molto probabilmente l'hash key che vedi sullo schermo è quello vero. Se non funziona niente, prova a inserirlo in Facebook.

Ho ottenuto tutti questi risultati con: Windows 7 edizione a 64 bit, Android Studio 1.2.2, JDK 7.

19
Martin Doychev

Secondo Login Facebook per Android , è necessario fornire il valore Key Hash. Per ottenerlo, avrai bisogno della chiave usata per firmare la tua domanda.

keytool \
    -exportcert \
    -alias YourKeyAlias \
    -storepass YourStoreKeyPassword \
    -keystore PathToYourKeyStoreFile | openssl sha1 -binary | openssl base64
12
JP Ventura

Ho provato tutto quanto sopra e nulla ha aiutato il mio caso con i miei clienti! Rispetto al mio cliente ha ricordato che aveva l'app di Facebook installata sul suo dispositivo . Dopo averlo rimosso l'accesso funzionava perfettamente . L'hashkey ha stato cambiato e ho sostituito le vecchie chiavi hash su Facebook Developers Console con la chiave dell'errore (come suggerito sopra) e funziona! La stessa App di Facebook potrebbe essere il problema, quindi è meglio capirlo dispositivo con l'app Facebook installata e su un dispositivo con l'app Facebook non installata e gestibile in entrambi i casi.

7
Matan Dahan

È necessario creare due hash chiave uno per Debug e uno per Release.

Per hash tasto debug:

Su OS X, esegui:

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

Su Windows, esegui:

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

Sorgente di hash delle chiavi di debug

Per l'hash del tasto Release:

Su OS X, esegui: (Sostituisci cosa tra <> con i tuoi valori)

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Su Windows, usa: (Sostituisci cosa tra <> con i tuoi valori)

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Rilascia la sorgente di hash dei tasti

6
MBH

Avevo lo stesso problema. Primo accesso, bene, ma poi, hash della chiave non valida.

Anche se questo non è un thread di Unity, ho trovato la mia risposta qui. Quindi lascerò la mia risposta, nel caso in cui qualcun altro (deviato come me) inciampa su di esso.

Facebook SDK per Unity ottiene l'hash della chiave sbagliata. Ottiene la chiave da "C:\Users \" il tuo utente ".Android\debug.keystore" e, in un mondo perfetto, dovrebbe ottenerlo dal keystore che hai creato nel tuo progetto. Ecco perché ti sta dicendo che l'hash della chiave non è registrato.

Come suggerito da Madi , puoi seguire i passaggi su questo link per trovare la chiave giusta. Basta fare in modo che Shure li punti al keystore all'interno del tuo progetto, altrimenti non otterrai la chiave giusta.

Dopo una lunga ricerca, abbiamo trovato una soluzione.

Abbiamo impostato le autorizzazioni come:

loginButton.setReadPermissions (public_profile email);

Questo ha funzionato per la prima volta, ma quando abbiamo effettuato nuovamente l'accesso all'FB, abbiamo fornito l'errore hash non valido.

La soluzione semplice era quella di cambiare la linea sopra a:

    loginButton.setReadPermissions(Arrays.asList(
            "public_profile", "email"));

E ha funzionato come una gioia!

Spero che questo aiuti qualcuno.

Facebook dovrebbe restituire l'eccezione corretta invece dell'errore di chiave hash non valido errato.

2
user3663906

Questo codice ti darà il tuo hash per Facebook ma devi seguire questi passaggi per ottenere il rilascio hash hash . 1. copia e incolla questo codice nella tua attività principale

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

}
  1. generare apk firmato.
  2. collega il tuo telefono al laptop e assicurati che rimanga collegato.
  3. installa ed esegui l'apk nel tuo telefono spostando manualmente l'apk di rilascio sul tuo telefono.

  4. ora guarda il logcat di Android (usa il filtro KeyHash:) dovresti vedere la tua chiave di hash del rilascio per facebook. semplicemente copialo e incollalo nel tuo https://developers.facebook.com/apps è nelle impostazioni.

  5. ora puoi testare l'app che dovrebbe funzionare perfettamente.

    in bocca al lupo. 

2
abdul jalil

incolla il seguente codice nel tuo metodo OnCreate 

try {
    PackageInfo info = getPackageManager().getPackageInfo(
            "com.example.packagename", 
            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) {
  e.printStackTrace();

} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
}

Basta modificare il nome del pacchetto. Quindi vai al tuo gatto Log e seleziona Debug search qui troverai la chiave hash. Ora copia questa chiave di hash e poi vai al sito developer.facebook.app_id, quindi modifica la tua chiave hash e poi salva. Ora esegui di nuovo il tuo progetto Android. Penso che il problema verrà risolto.

1
pavel_coder

Dopo così tante prove sono incappato in una soluzione a questo. Ho generato e aggiunto entrambe le chiavi di debug e release alla console di sviluppo di Facebook e ancora ottengo l'errore.

L'unica soluzione che ha funzionato per me è la disinstallazione del programma OpenSSL da google e il download da http://slproweb.com/products/Win32OpenSSL.html

Funziona davvero come per magia

1
Uchenna Nnodim

Se stai digitando manualmente il keysh (ad esempio da Mobile a Facebook Dashboard), assicurati di distinguere tra L piccola e I capitale.

1
Kashif Nazar

Ho avuto lo stesso problema durante il debug della mia app. Ho riscritto l'hash che hai cancellato nell'immagine allegata (quella che Facebook dice non valida) e l'ho aggiunta nella console degli sviluppatori di Facebook agli hash chiave. Basta fare attenzione agli errori di battitura. 

Questa soluzione è più simile a una semplice soluzione che a una soluzione adeguata.

1
Piotr Sagalara

Questo può aiutare qualcuno con lo stesso problema 

  1. Genera hash chiave usando il codice seguente 

keytool -exportcert -alias <your_keystore> alias -keystore <your_keystore_file> | openssl sha1 -binary | openssl base64

come utilizzare keytool

2.Inseriscilo nel campo richiesto in Sviluppatore di facebook

3. In Android Studio File-> Struttura del progetto  enter image description here

aggiungi i parametri di firma

4. Selezionare aromi  enter image description here

seleziona la configurazione di firma che abbiamo creato

5.seleziona tipo di build  enter image description here

6.seleziona build varient e costruiscilo

 enter image description here

1
CLIFFORD P Y

Ho avuto lo stesso problema ..___. Assicurati di costruire l'APK con lo stesso dispositivo che genera la chiave hash che è memorizzata nella sezione sviluppatori di Facebook.

0
genericname

Ho risolto questo problema aggiungendo quanto segue in MainApplication.onCreate:

      try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.genolingo.genolingo",
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String hash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
                KeyHash.addKeyHash(hash);
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("PackageInfoError:", "NameNotFoundException");
        } catch (NoSuchAlgorithmException e) {
            Log.e("PackageInfoError:", "NoSuchAlgorithmException");
        }

Ho quindi caricato questo nella console per sviluppatori di Google e poi scaricato il derivato APK che, per qualsiasi motivo, ha un hash della chiave completamente diverso.

Ho quindi utilizzato logcat per determinare il nuovo hash della chiave e l'ho aggiunto a Facebook come gli altri utenti hanno delineato.

0
Michael

Quello che Facebook ha usato non è la password e l'alias predefiniti per il debug. È necessario modificarlo in seguito e funzionerà.

/usr/lib/jvm/jdk1.8.0_66/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64

Se non hai cambiato nulla con la password predefinita dovrebbe essere Android . Puoi anche configurarlo nel file build.gradle. Ma la stessa password alias dovrebbe essere usata per generare hash.

Android{
    signingConfigs {
        release {
            storeFile file("~/.Android/debug.keystore")
            storePassword "Android"
            keyAlias "androiddebugkey"
            keyPassword "Android"
        }
    }
}
0
abhi shukla
try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "www.icognix.infomedia",
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("YourKeyHash :", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                Log.d("YourKeyHash: ", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }
0
ZafarHussain

Ragazzi qui ci sono molte risposte giuste. Solo una cosa. Incolla l'hash ricevuto in Applicazione -> Impostazioni -> Principale non tramite tutorial di avvio rapido.

0
Chuck

Questo ha funzionato per me.

Copia l'APK sul tuo PC nella cartella Programmi\Java\jdkX.X.X_XXX\bin

Nel mio caso è C:\Programmi\Java\jdk1.8.0_191\bin

Aprire CMD in questa directory e digitare quanto segue

keytool -list -printcert -jarfile YOUR_APK_NAME.apk

Copia il valore SHA1 negli appunti Sarà simile a questo: 79:D0:E6:80:4E:28:1E:D1:88:28:CB:D7:E6:BE:2E:0C:FB:24:98:52

Quindi vai su http://tomeko.net/online_tools/hex_to_base64.php per convertire il tuo valore SHA1 in base64.

Questo è ciò che Facebook richiede Ottieni l'hash generato "******************** =" e copia l'hash chiave nelle impostazioni dell'app per sviluppatori Facebook.

0
Muhammad Ovi

Ecco come ho risolto questo problema

Innanzitutto, devi ottenere il valore SHA-1. Per questo, ci sono due modi.
-> Per ottenere il valore SHA-1 in Android Studio.

  1. Fai clic su Gradle
  2. Fai clic su Segnala firma
  3. Copia il valore SHA-1

OR -> Per ottenere il valore SHA-1 dal file keystore.

keytool -list -v -keystore keystore_file_name.jks -alias key0

Copia il valore di SHA1 sul tuo clip boardcome questo CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84

e apri http://tomeko.net/online_tools/hex_to_base64.php per convertire il tuo valore SHA1 in base64.
Questo è ciò che richiede Facebook
ottieni l'hash generato "******************** =" e copia l'hash della chiave nell'app per Facebook.

0
Sajid Zeb