Integrazione di Android Facebook con hash chiave non valido


194

In una delle mie app ho bisogno di ottenere dati da Facebook ... Sto facendo questo:

Ho creato l' ID app . Si accede correttamente, ma dopo aver effettuato la disconnessione, accedo e quindi mi dà:

Schermata dell'errore hash chiave non valido Facebook

Cosa sto facendo di sbagliato? Sto usando Facebook SDK ... Ho installato Facebook sul mio telefono ... Funziona bene all'interno di un emulatore, ma non è installata l'applicazione Facebook integrata.

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");
}

12
ma funziona bene per la prima volta se non funziona se eseguo l'accesso dopo il logout
Android

1
sì, ho ... creato usando try {PackageInfo info = getPackageManager (). getPackageInfo ("com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES); per (firma firma: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); }
Android,

1
Ho risolto questo problema qui! Qui capito bene! [ Stackoverflow.com/questions/5306009/… ] [1]
Madi

3
@Android Anche se questo è vecchio, ma dovrei menzionarlo. Ciò non accade quando un utente si disconnette e quindi accede. Ciò accade quando si esegue il debug la seconda volta, ad esempio reinstallare l'app durante il debug. Pertanto, l'hash cambia. Questo non accade in caso di app firmata (produzione pronta)
Nilay Vishwakarma

1
Ricevi lo stesso errore se disinstalli l'app di Facebook? Ho provato da due telefoni e questo errore si verifica solo quando è installata l'app di Facebook.
Jaime Montoya,

Risposte:


274

La chiave hash generata è errata. È possibile ottenere la chiave hash in due passaggi.

Uno è attraverso un prompt dei comandi. Un altro è attraverso la codifica. La chiave hash tramite un prompt dei comandi funziona solo la prima volta. Non conosco il motivo. Ho anche avuto lo stesso problema. Quindi l'ho provato a livello di programmazione.

Segui questi passi:

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 precedente senza errori (potresti trovare il nome del tuo pacchetto nel file manifest di Android).

Esegui la tua applicazione. Vai all'attività in cui hai incollato il codice sopra. Nel file LogCat, cercare "KeyHash". Potresti 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 qui sotto.

Inserisci qui la descrizione dell'immagine

Una volta terminato il passaggio precedente, riavvia nuovamente l'app. Ora puoi accedere a Facebook. Per maggiori dettagli sull'hash delle chiavi, controlla il link .

Se aggiungi informazioni errate nella pagina delle impostazioni, significa che genererà un errore. Quindi usa le informazioni corrette lì. Inoltre, se il pubblico (diverso da te) deve utilizzare l'applicazione, significa che è necessario abilitare l'autorizzazione (modificare "sì" in "Stato e revisione" accanto all'impostazione) .


20
In questo modo, molto probabilmente hai un hash chiave per il keystore di debug. Funziona per te in modalità di sviluppo, non è necessario per la tua modalità di produzione. Almeno, non funziona per la mia app di produzione.
Liangjun,

3
grazie mi hai risparmiato un sacco di tempo ... il documento ufficiale di Facebook non dovrebbe leggerlo è una cazzata
DjP,

Grazie mille amico!
KinGPinG

Ehi con questo codice PackageInfo info = getPackageManager (). GetPackageInfo ("com.example.packagename", PackageManager.GET_SIGNATURES); per (firma firma: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); viene inviata una chiave hash diversa mentre quando eseguivo il comando in cmd su windows la mia chiave hash era diversa e l'ho aggiunta in FB ma il registro mostra ancora l'hash del codice programmatico
Sagar Devanga,

1
Mi ha risparmiato un sacco di tempo. Ancora il meglio. Controlla il prolisso per il keyhash e copialo e incollalo nella pagina degli sviluppatori di Facebook. Non commettere l'errore di digitarlo manualmente! Inoltre, tieni presente che keyhash cambia ogni volta che disinstalli e installi l'app.
sanjeev,

190

Se stai utilizzando la firma dell'app Google Play:

Apri la sezione Firma app in Google Play Console e ottieni l' hash SHA-1 nel certificato di firma app . Quindi convertilo in Base64 , ad esempio con questo strumento: esadecimale -> decodificatore di stringa base64

Schermata della console

Converti in screenshot di Base64


14
Signore! sei un vero toccasana! Un sacco d'amore. Stavo usando la firma del Play Store mentre avevo inserito gli hash dalle chiavi di rilascio locali nella console di Facebook.
Taha Rushain,

4
Mi salvi la vita, sto usando reagire, nessuno ha menzionato la firma dell'app Play Store
TomSawyer

7
Grazie! Funziona! Puoi anche usare il comando terminal per questo: echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Yuriy Seredyuk

4
Questo è ciò che deve essere fatto per l'ambiente di produzione !!! Pollice su!
Bikey, il

Esattamente quello che volevo sapere. Hashkey cambia nel debug ogni volta che disinstalli e installi l'app. Per l'apk firmato questa è la soluzione migliore! Puoi rendere la vita più facile grazie!
sanjeev,

124

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

Inserisci qui la descrizione dell'immagine

Quindi assicurarsi che la vostra applicazione è in diretta su developer.facebook.com .

Questo cerchio verde indica che l'app è attiva:

Inserisci qui la descrizione dell'immagine

In caso contrario, segui questi due passaggi per rendere attiva la tua app:

Passaggio 1 Vai all'applicazione → impostazioneaggiungi e -mail di contatto e applica Salva modifiche.

Passaggio 2 Vai all'opzione Revisione app e assicurati che questo interruttore sia . Ho aggiunto uno screenshot:

Inserisci qui la descrizione dell'immagine

Nota: se si desidera copiare l'hashkey, controllare BlueServiceQueue in LogCat .


5
C'è un modo semplice per copiare l'hash dal telefono?
Daniel Shatz,

4
@DanielShatz appare in logcat. L'ho scoperto solo dopo averlo copiato lettera per lettera.
Alaa M.

4
@DanielShatz Cerca tag BlueServiceQueuein logcat
Alaa M.

4
Questa risposta ha funzionato per me. Dopo alcuni tentativi di digitare manualmente l'hash mi ha dato lo stesso errore, il problema era che ho digitato maiuscola "I" anziché L "l" minuscola. Mi ci è voluto del tempo per rendermene conto.
Markus,

1
Funziona ma mi chiedo da dove FB ottiene questa chiave hash? Nessuno si chiede? L'errore stava visualizzando la chiave hash funzionante, ma anche con tutti i comandi, o ottenere sha1 su base64 dalla firma dell'app google mi ha dato la chiave che FB ha mostrato nell'errore ... Grazie comunque per il trucco
Umar3x

82

Ho avuto lo stesso problema. Ero sicuro che fosse dovuto a un difetto molto piccolo e sì, lo era!

Ho trovato la soluzione:

Quando ho generato la chiave hash di debug nel mio computer, ho inserito la password del mio sistema. Ma la password dovrebbe essere la seguente -

Inserisci la password del keystore: "android". Questo è stato l'unico problema nel mio caso.

----- Per generare l' hash della chiave di debug , utilizzare questo comando -

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

Inserisci la password del keystore: 'android'

----- Per generare l' hash della chiave di rilascio , utilizzare questo comando -

keytool -exportcert -alias "alias of keystore" -keystore "Your path to the keystore when signing app" | openssl sha1 -binary | openssl base64

Fornire la password del keystore dopo aver eseguito questo comando.


5
usando "android" come password funziona per me. questo è sconcertante.
addio

3
usa questo "android" come password quando generi la chiave hash.
Akash Bisariya,

2
sul computer Windows, assicurarsi che la variabile path sia impostata correttamente per le cartelle openssl \ bin e java .. \ bin. Imposta anche la variabile HOMEPATH per poter usare i comandi di Facebook.
KawaiKx,

1
Almeno su Mac ho dovuto installare Java JDK per farlo funzionare. Altrimenti il ​​comando di debug sopra genera ancora un hash, ma l'hash non funziona e non ti verrà richiesta una password. Con JDK installato questo ha funzionato come un fascino.
Lejonl,

1
questa risposta dovrebbe essere la RISPOSTA CORRETTA
Evan Ngo,

20

Ho avuto lo stesso problema. Ho fatto una breve ricerca sui possibili motivi di questo strano comportamento e ho scoperto quanto segue:

  • Durante la prima esecuzione di una nuova app di Facebook, consentirà la connessione / accesso anche se non si specifica alcun hash chiave.

  • Per me, il tutorial che Facebook ha fornito non ha generato l'hash chiave corretto, 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à - il HOMEPATH, l'esistenza del keystore, ecc. Forse devi anche fornire la password.

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

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

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


2
versione linux: `keytool -exportcert -alias androiddebugkey -keystore $ HOME / .android / debug.keystore | openssl sha1 -binary | openssl base64`
ruX

1
Basta inserire ciò che viene mostrato da Facebook sullo schermo del dispositivo, che dovrebbe funzionare. Grazie per la nota @Martin
ralphgabb,

14

Secondo Facebook Login per Android , devi fornire il valore hash chiave. Per ottenerlo, avrai bisogno della chiave utilizzata per firmare la tua domanda.

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

1
voglio solo aggiungere un commento, usare il tuo keystore di produzione.
Liangjun,

2
@Liangjun In realtà dovresti usare tutte le tue chiavi perché altrimenti non sarai in grado di testare il Facbeook Login in un ambiente di debug.
Pijusn,

2
@Pius, sì, in realtà utilizzo entrambi i tasti. Avrei dovuto dirlo chiaramente.
Liangjun,

Ricevo un errore per questo comando (Nessun runtime Java presente, richiesta di installazione), ma ricevo anche una chiave, tuttavia non è valido e copio semplicemente incolla quello da logcat che mi dice che non è riconosciuto.
Cristi Băluță,

8

È necessario creare due hash chiave, uno per il debug e uno per il rilascio.

Per l' hash della chiave di 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

Fonte hash chiave di debug

Per l' hash della chiave di rilascio :

Su OS X, esegui (sostituisci ciò che è in mezzo <>con i tuoi valori) :

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

Su Windows, usa (sostituisci cosa c'è tra i <>tuoi valori) :

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

Rilascio sorgente hash chiave


Ricevo un errore per questo comando (Nessun runtime Java presente, che richiede l'installazione.) Ma ho ancora una chiave, tuttavia non è valido e per farlo funzionare basta copiare incollare quello da logcat
Cristi Băluță

Forse non hai impostato il PERCORSO di java e keytool nella riga di comando? @ CristiBăluță
MBH

7

Ho provato tutte le risposte precedenti e nulla ha aiutato il mio caso con i miei clienti!

Quindi il mio cliente si è ricordato che aveva installato l'app di Facebook sul suo dispositivo. Dopo averlo rimosso. il login ha funzionato perfettamente.

L'hashkey è stato modificato e ho sostituito le vecchie chiavi di hash nella Console per gli sviluppatori di Facebook con la chiave dell'errore (come suggerito sopra) e funziona!

La stessa app di Facebook potrebbe essere il problema, quindi è meglio capirlo su un dispositivo con l'app di Facebook installata e su un dispositivo con l'app di Facebook non installata e gestire entrambi i casi ...


Sì lo stesso qui ho ricevuto questo errore dopo aver installato l'app di Facebook sul dispositivo. Quindi attualmente ho inserito 2 hash key nelle impostazioni di sviluppo di Facebook.
stuckedoverflow

3
Ho una situazione molto simile alla tua. La cosa che mi ha aiutato è andare alla tua pagina FB - Impostazioni - App - Rimuovi l'app dall'elenco. Cambia chiave hash e reinstalla l'app fb e la tua app. E ora funziona ...
anna_manzhula,

4

Ecco come ho risolto questo problema:

Per prima cosa 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 Rapporto di firma
  3. Copia il valore SHA-1

O

Per ottenere il valore SHA-1 dal file del keystore .

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

Copia il valore SHA-1 negli appunti in questo modo:

CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84

E apri Esadecimale -> Decodificatore di stringa Base64 per convertire il valore SHA-1 in Base64.

Questo è ciò che richiede Facebook.

Ottieni l'hash generato "******************** =" e copia l'hash chiave sull'app di Facebook.


3

Avevo lo stesso problema. Prima accedi, va bene, ma poi, un hash chiave non valido.

L'SDK di Facebook 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 ottenerla 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. Assicurati di indicarli al keystore all'interno del tuo progetto. Altrimenti non otterrai la chiave giusta.


3

Il seguente codice ti fornirà il tuo hash per Facebook, ma devi seguire questi passaggi per ottenere l'hash candidato al rilascio.

  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) {
    }
  2. Genera un file APK firmato .

  3. Collega il telefono a un laptop e assicurati che rimanga connesso.
  4. Installa ed esegui il file APK sul telefono spostando manualmente l'APK di rilascio sul telefono.
  5. Ora guarda Android LogCat (usa il filtro KeyHash:) . Dovresti vedere la chiave hash di rilascio per Facebook. Basta copiarlo e incollarlo nel tuo https://developers.facebook.com/apps. È sotto le impostazioni.
  6. Ora puoi provare l'app che dovrebbe funzionare perfettamente.

nota che il codice funziona solo se generi un apk firmato. altrimenti ti darà solo il debug dell'hash apk che è inutile per l'apk rilasciato
abdul jalil

Ciao, quando ho dato l'hashkey generato all'app di Facebook funziona benissimo ma quando provo a funzionare su un altro dispositivo sta mostrando di nuovo 'CHIAVE DI TRATTAMENTO NON VALIDO' come posso impostare la chiave di hash per il libro contente per il lavoro su tutti i dispositivi.
Deepak,

2

Dopo una lunga ricerca, abbiamo trovato una soluzione.

Avevamo impostato le autorizzazioni come:

loginButton.setReadPermissions(public_profile email);

Questo ha funzionato per la prima volta, ma quando abbiamo effettuato nuovamente l'accesso a Facebook, ha generato l'errore di hash non valido .

La soluzione semplice era cambiare la riga sopra in:

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

E ha funzionato come una felicità!

Facebook dovrebbe restituire l'eccezione corretta anziché l'errore fuorviante non valido della chiave hash.


Ho lo stesso problema. Ho provato la tua soluzione ma ancora non riesco a risolvere il mio problema @ user3663906
BekaKK

2

Dopo così tante prove mi sono imbattuto in una soluzione a questo. Ho generato e aggiunto le chiavi di debug e di rilascio alla console per sviluppatori di Facebook e ho ancora riscontrato l'errore.

L'unica soluzione che ha funzionato per me è stata disinstallare il programma OpenSSL da Google e scaricare dal programma di installazione OpenSSL per Windows Win32 / Win64

Funziona davvero come per magia.


2

Anche se a questa domanda è stata data una risposta in molti modi utili, volevo solo aggiungere che quando ho seguito la risposta di Rafal Maleks (usando i tasti hash su Google Play Console) NON sono stato in grado di utilizzare il tasto SHA1 per la firma dell'app, ma ho comunque ottenuto il generico errore da Facebook. Invece, dovevo usare l'impronta digitale del certificato SHA-1 dalla parte Carica certificato (appena sotto la parte Firma app su Google Play Console). Stesso processo altrimenti;

  1. Copia l'impronta digitale del certificato SHA-1 dalla sezione Carica certificato in Google Play Console

  2. Converti SHA-1 usando: http://tomeko.net/online_tools/hex_to_base64.php e copia l'output (base64)

  3. Incollalo nell'input Key Hash su developer.facebook.com e salva le modifiche.

Speriamo che questa risposta non sia ridondante e aiuterà qualcuno che non riesce a farlo funzionare con il certificato di firma app.

Ora l'accesso a Facebook funziona nella mia app sia in modalità debug che in modalità di rilascio.


1

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 file LogCat e seleziona Cerca debug qui. Quindi troverai la chiave hash. Ora copia questo tasto hash e poi vai al sito developer.facebook.app_id, modifica il tuo tasto hash e premi Save. Ora esegui di nuovo il tuo progetto Android. Penso che il problema verrà risolto.


7
ripetendo l'altro ragazzo
Beto Caldas il

1

Questo può aiutare qualcuno con lo stesso problema.

  1. Genera l'hash della chiave usando il codice seguente

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

    Come usare keytool

  2. Incollalo nel campo richiesto nello sviluppatore di Facebook

  3. In Android Studio, menu FileStruttura del progetto

    Inserisci qui la descrizione dell'immagine

    Aggiungi parametri di firma.

  4. Seleziona sapori

    Inserisci qui la descrizione dell'immagine

    Seleziona la configurazione della firma che abbiamo creato.

  5. Seleziona il tipo di build

    Inserisci qui la descrizione dell'immagine

  6. Seleziona la variante di costruzione e creala

    Inserisci qui la descrizione dell'immagine


1

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 aggiunto nella console degli sviluppatori di Facebook agli hash chiave. Fai solo attenzione agli errori di battitura.

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


1

Se stai digitando il keyhash manualmente (ad esempio dal cellulare alla Dashboard di Facebook), assicurati di distinguere tra L piccola e maiuscola I.


1
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

Ciò che Facebook ha utilizzato non è la password e l'alias predefiniti per il debug. Devi cambiarlo 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 modificato 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 l'hash:

android {
    signingConfigs {
        release {
            storeFile file("~/.android/debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
}

0

Ecco molte risposte giuste. Solo una cosa:

Incolla l'hash ricevuto in ApplicazioneImpostazioniPrincipale , non tramite il tutorial di avvio rapido.


0

Ho avuto lo stesso problema.

Assicurati di creare il file APK con lo stesso dispositivo che ha generato l'hashkey archiviato nella sezione degli sviluppatori di Facebook.


0

Ho risolto questo 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 sulla console per sviluppatori di Google e quindi scaricato l' APK derivato che, per qualsiasi motivo, ha un hash chiave completamente diverso.

Ho quindi usato LogCat per determinare il nuovo hash chiave e l'ho aggiunto Facebook come altri utenti hanno delineato.


0

Se stai generando hash delle chiavi di rilascio, assicurati di inserire la password effettiva del tuo keystore e non "android".

Questo era il mio problema. La versione di debug funzionava, ma la versione APK non lo era.


-1

Usa il codice seguente nel metodo onCreate () della tua attività:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "your application package name",
                           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) {
}

Esegui questo codice. Questo genererà la chiave hash. Copia questo KeyHash nelle impostazioni dell'applicazione di Facebook e salva le modifiche. Quindi accedere all'applicazione. Funzionerà perfettamente anche in futuro.


3
ripetendo l'altro ragazzo
Beto Caldas il
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.