Integracja Androida z Facebookiem z nieprawidłowym skrótem klucza


194

W jednej z moich aplikacji muszę pobrać dane z Facebooka ... Robię to:

Utworzyłem identyfikator aplikacji . Loguje się pomyślnie, ale po wylogowaniu loguję się, a następnie daje mi:

Zrzut ekranu nieprawidłowego klucza skrótu Facebook

Co robię źle? Korzystam z zestawu SDK Facebooka ... Zainstalowałem Facebooka na moim telefonie ... Działa dobrze w emulatorze, ale nie ma zainstalowanej wbudowanej aplikacji Facebook.

To jest mój kod:

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
ale działa dobrze po raz pierwszy ligin, nie działa, jeśli zaloguję się po wylogowaniu
Android

1
tak, mam .. utworzone za pomocą try {PackageInfo info = getPackageManager (). getPackageInfo („com.facebook.samples.hellofacebook”, PackageManager.GET_SIGNATURES); dla (Podpis podpisu: info.signatures) {MessageDigest md = MessageDigest.getInstance („SHA”); md.update (Signature.toByteArray ()); Log.d („KeyHash:”, Base64.encodeToString (md.digest (), Base64.DEFAULT)); }
Android

1
Odsunąłem ten problem tutaj! Oto zrozumiałe fajne! [ Stackoverflow.com/questions/5306009/… ] [1]
Madi

3
@Android Mimo, że jest stary, ale powinienem o tym wspomnieć. Nie dzieje się tak, gdy użytkownik wyloguje się, a następnie zaloguje. Dzieje się tak, gdy debugujesz po raz drugi, tj. Ponownie instalujesz aplikację podczas debugowania. W ten sposób zmienia się skrót. Nie dzieje się tak w przypadku podpisanej aplikacji (gotowa do produkcji)
Nilay Vishwakarma

1
Czy pojawia się ten sam błąd, jeśli odinstalujesz aplikację Facebook? Testowałem z dwóch telefonów i ten błąd występuje tylko wtedy, gdy zainstalowana jest aplikacja Facebook.
Jaime Montoya

Odpowiedzi:


274

Wygenerowany klucz skrótu jest niepoprawny. Możesz uzyskać klucz skrótu, wykonując dwa kroki.

Jednym z nich jest wiersz polecenia. Kolejnym jest kodowanie. Klawisz skrótu w wierszu polecenia działa tylko za pierwszym razem. Nie znam powodu. Mam też ten sam problem. Więc wypróbowałem to programowo.

Wykonaj następujące kroki:

Wklej następujący kod 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) {
}

Zmodyfikuj „com.example.packagename” za pomocą nazwy pakietu w powyższym kodowaniu bezbłędnie (możesz znaleźć nazwę swojego pakietu w pliku manifestu Androida).

Uruchom aplikację. Przejdź do działania, w którym wkleiłeś powyższy kod. W pliku LogCat wyszukaj „KeyHash”. Możesz znaleźć kluczową wartość skrótu. Skopiuj klucz skrótu i ​​przejdź do strony pulpitu nawigacyjnego aplikacji Facebook. Przejdź do ustawień i wprowadź szczegóły jak na poniższym obrazku.

Wpisz opis zdjęcia tutaj

Po zakończeniu powyższego kroku uruchom ponownie aplikację. Możesz teraz zalogować się na Facebooku. Aby uzyskać więcej informacji na temat kluczowego skrótu, sprawdź link .

Jeśli dodasz nieprawidłowe informacje na stronie ustawień, oznacza to, że spowoduje to błąd. Więc użyj tam poprawnych informacji. A także, jeśli opinia publiczna (inna niż Ty) musi korzystać z Twojej aplikacji, oznacza to, że musisz włączyć zezwolenie (zmień „tak” w „Status i weryfikacja” obok ustawienia) .


20
W ten sposób najprawdopodobniej masz klucz skrótu do debugowania magazynu kluczy. Działa dla ciebie w trybie programowania, niekoniecznie działa w twoim trybie produkcyjnym. Przynajmniej nie działa w mojej aplikacji produkcyjnej.
Liangjun,

3
dziękuję, że zaoszczędziłeś mi dużo czasu ... oficjalny dokument na Facebooku nie powinien czytać, że to bzdury
DjP

Dziękuję bardzo stary!
KinGPinG

Hej dzięki temu kodowi PackageInfo info = getPackageManager (). GetPackageInfo („com.example.packagename”, PackageManager.GET_SIGNATURES); dla (Podpis podpisu: info.signatures) {MessageDigest md = MessageDigest.getInstance („SHA”); md.update (Signature.toByteArray ()); Log.d („KeyHash:”, Base64.encodeToString (md.digest (), Base64.DEFAULT)); inny klucz skrótu jest wysyłany, a kiedy uruchomiłem polecenie w cmd w systemie Windows, mój klucz skrótu był inny i dodałem go w FB, ale dziennik pokazuje skrót kodu programowego
Sagar Devanga

1
Zaoszczędził mi dużo czasu. Wciąż najlepszy. Sprawdź verbose skrót klucza i skopiuj go i wklej na stronie programistów Facebooka. Nie popełnij błędu, wpisując go ręcznie! Pamiętaj też, że zmiana klucza zmienia się za każdym razem, gdy odinstalowujesz i instalujesz aplikację.
sanjeev

188

Jeśli używasz podpisywania aplikacji Google Play:

Otwórz sekcję podpisywania aplikacji w konsoli Google Play i uzyskaj skrót SHA-1 w obszarze Certyfikat podpisywania aplikacji . Następnie przekonwertuj go na Base64 , na przykład za pomocą tego narzędzia: Hexadecimal -> dekoder ciągów base64

Zrzut ekranu konsoli

Konwertuj na zrzut ekranu Base64


14
Pan! jesteś ratownikiem! Dużo miłości. Korzystałem z podpisywania w Sklepie Play, kiedy umieściłem skróty z moich lokalnych kluczy wydania w konsoli Facebooka.
Taha Rushain


7
Dziękuję Ci! To działa! Możesz także użyć do tego polecenia terminalu: echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Jurij Seredyuk

4
To właśnie należy zrobić dla środowiska produkcyjnego !!! Kciuki w górę!
Bikey,

Dokładnie to, co chciałem wiedzieć. Zmiany skrótu podczas debugowania za każdym razem, gdy odinstalowujesz i instalujesz aplikację. Dla podpisanego APK to najlepsze rozwiązanie! Dzięki ppl ułatwisz życie!
sanjeev

123

Jeśli napotykasz ten problem, umieść ten klucz w developer.facebook.com :

Wpisz opis zdjęcia tutaj

Następnie upewnij się, że Twoja aplikacja jest dostępna na stronie developer.facebook.com .

To zielone kółko oznacza, że ​​aplikacja jest aktywna:

Wpisz opis zdjęcia tutaj

Jeśli tak nie jest, wykonaj następujące dwa kroki, aby uruchomić aplikację:

Krok 1 Przejdź do aplikacji → ustawieniedodaj Kontaktowy adres e - mail i zastosuj Zapisz zmiany.

Krok 2 Przejdź do opcji przeglądu aplikacji i upewnij się, że to ustawienie to Tak . Dodałem zrzut ekranu:

Wpisz opis zdjęcia tutaj

Uwaga: Jeśli chcesz skopiować klucz skrótu, zaznacz BlueServiceQueue w LogCat .


5
Czy istnieje prosty sposób na skopiowanie tego skrótu z telefonu?
Daniel Shatz,

4
@DanielShatz pojawia się w logcat. Dowiedziałem się dopiero po skopiowaniu go litera po literze.
Alaa M.

4
@DanielShatz Poszukaj tagu BlueServiceQueuew logcat
Alaa M.

4
Ta odpowiedź zadziałała dla mnie. Po kilku próbach ręcznego wpisania skrótu dał mi ten sam błąd, problem polegał na tym, że wpisałem wielkie i „I” zamiast małych L „l”. Zajęło mi to trochę czasu, aby to zrozumieć.
Markus

1
To działa, ale zastanawiam się, skąd FB ma ten klucz skrótu? Nikt się nie zastanawia? Błąd polegał na wyświetleniu dobrego działającego klucza skrótu, ale nawet przy wszystkich poleceniach lub przechodzeniu do sha1 do base64 z podpisywania aplikacji google dał mi klucz, który FB pokazał w błędzie ... W każdym razie dzięki za podstęp
Umar3x

82

Mam ten sam problem. Byłem pewien, że to z powodu bardzo małej winy i tak było!

Znalazłem rozwiązanie:

Podczas generowania debugowania klucza skrótu na komputerze wpisałem hasło do mojego systemu. Ale hasło powinno być następujące -

Wprowadź hasło do magazynu kluczy: „Android”. To był jedyny problem w moim przypadku.

----- Do generowania skrótu klucza debugowania użyj tego polecenia -

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

Wprowadź hasło do magazynu kluczy: „android”

----- Aby wygenerować skrót klucza Release , użyj tego polecenia -

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

Podaj hasło do magazynu kluczy po wykonaniu tego polecenia.


5
używając „Androida”, ponieważ hasło działa dla mnie. to jest zagadkowe.
adbie

3
użyj tego „Androida” jako hasła podczas generowania klucza skrótu.
Akash Bisariya

2
na komputerze z systemem Windows upewnij się, że zmienna ścieżki jest poprawnie ustawiona dla folderów openssl \ bin i java .. \ bin. Ustaw także zmienną HOMEPATH, aby móc używać poleceń z Facebooka.
KawaiKx

1
Przynajmniej na Macu musiałem zainstalować Java JDK, aby to działało. W przeciwnym razie powyższe polecenie debugowania nadal generuje skrót, ale skrót nie działa i nie pojawi się monit o hasło. Po zainstalowaniu JDK działało to jak urok.
lejonl

1
odpowiedzią powinna być PRAWIDŁOWA ODPOWIEDŹ
Evan Ngo,

20

Doświadczyłem tego samego problemu. Przeprowadziłem krótkie badanie możliwych przyczyn tego dziwnego zachowania i stwierdziłem, że:

  • Podczas pierwszego uruchomienia nowej aplikacji Facebook pozwoli na połączenie / logowanie, nawet jeśli nie określisz żadnych skrótów klawiszowych.

  • Dla mnie samouczek dostarczony przez Facebooka nie wygenerował poprawnego skrótu klucza, ponieważ dawał niewłaściwą konfigurację . Podczas wykonywania:

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

upewnij się, że sprawdziłeś wszystkie właściwości - HOMEPATHistnienie magazynu kluczy itp. Być może musisz także podać hasło.

  • To, co wygenerowało prawidłową konfigurację, to rozwiązanie zaproponowane przez @Mahendran .

  • Ponadto, jeśli zobaczysz pierwotnie opublikowany błąd ( http://i.stack.imgur.com/58q3v.png ), najprawdopodobniej kluczowy skrót, który widzisz na ekranie, jest prawdziwy. Jeśli nic innego nie działa, spróbuj wprowadzić go na Facebooku.

Wszystkie te wyniki uzyskałem dzięki: Windows 7 64-bit Edition, Android Studio 1.2.2, JDK 7.


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

1
Wystarczy wpisać to, co Facebook pokazuje na ekranie urządzenia, które powinno działać. Dzięki za notatkę @Martin
ralphgabb

14

Zgodnie z loginem Facebooka dla Androida musisz podać kluczową wartość skrótu. Aby go uzyskać, będziesz potrzebować klucza użytego do podpisania aplikacji.

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

1
po prostu chcesz dodać komentarz, użyj magazynu kluczy produkcji.
Liangjun,

2
@Liangjun Właściwie powinieneś używać wszystkich swoich kluczy, ponieważ w przeciwnym razie nie będziesz mógł przetestować Facbeook Login w środowisku debugowania.
Pijusn

2
@Pius, tak, faktycznie używam obu kluczy. Powinienem to jasno powiedzieć.
Liangjun

Dostaję błąd dla tego polecenia (brak środowiska wykonawczego Java, prośba o instalację.), Ale nadal otrzymuję klucz, jednak jest nieprawidłowy i po prostu kopiuję wklej ten z logcat, który mówi mi, że nie został rozpoznany.
Cristi Băluță

8

Musisz utworzyć dwa kluczowe skróty, jeden do debugowania i jeden do wydania.

Dla skrótu klucza debugowania :

W systemie OS X uruchom:

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

W systemie Windows uruchom:

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

Źródło skrótu klucza debugowania

W przypadku skrótu klucza Release :

W systemie OS X uruchom (zamień to, co jest pomiędzy <>wartościami) :

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

W systemie Windows użyj (zamień to, co pomiędzy <>na wartości) :

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

Zwolnij źródło skrótów klucza


Dostaję błąd dla tego polecenia (brak środowiska wykonawczego Java, żądanie instalacji), ale nadal otrzymuję klucz, jednak jest nieprawidłowy i aby działał, po prostu skopiuj wklej ten z logcat
Cristi Băluță

Może nie ustawiłeś ŚCIEŻKI swojej biblioteki Java i narzędzia w wierszu poleceń? @ CristiBăluță
MBH

7

Wypróbowałem wszystkie poprzednie odpowiedzi i nic nie pomogło mojej sprawie z moimi klientami!

Wtedy mój klient przypomniał sobie, że zainstalował aplikację Facebook na swoim urządzeniu. Po tym, jak go usunął. login działał idealnie.

Klucz skrótu został zmieniony, a stare klucze skrótu w Konsoli programistów Facebook zastąpiłem kluczem błędu (jak zasugerowano powyżej) i działa!

Problemem może być sama aplikacja Facebook, więc lepiej to rozwiąż na urządzeniu z zainstalowaną aplikacją Facebook i na urządzeniu z niezainstalowaną aplikacją Facebook i obsługuj oba przypadki ...


Tak samo tutaj dostałem ten błąd po zainstalowaniu aplikacji Facebook na urządzeniu. Więc obecnie umieszczam 2 klucze skrótu w ustawieniach programistów Facebooka.
Stuckedoverflow

3
Mam bardzo podobną sytuację do twojej. Pomogło mi przejście do strony FB - Ustawienia - Aplikacje - Usuń aplikację z listy. Zmień klucz skrótu i ​​zainstaluj ponownie aplikację FB oraz aplikację. A teraz to działa ...
anna_manzhula

4

Oto jak rozwiązałem ten problem:

Najpierw musisz uzyskać wartość SHA-1. Do tego są dwa sposoby.

Aby uzyskać wartość SHA-1 w Android Studio.

  1. Kliknij Gradle
  2. Kliknij opcję Podpisywanie raportu
  3. Skopiuj wartość SHA-1

LUB

Aby uzyskać wartość SHA-1 z pliku kluczy .

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

Skopiuj wartość SHA-1 do schowka w następujący sposób:

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

I otwórz dekoder szesnastkowy -> Base64, aby przekonwertować wartość SHA-1 na Base64.

Tego wymaga Facebook.

Pobierz wygenerowany skrót „******************** =” i skopiuj klucz skrótu do aplikacji na Facebooku.


3

Miałem ten sam problem. Najpierw zaloguj się, dobrze, ale potem nieprawidłowy skrót klucza.

Zestaw SDK Facebooka dla Unity otrzymuje nieprawidłowy skrót klucza. Pobiera klucz z „C: \ Users \” your user ”.android \ debug.keystore” i, w idealnym świecie, powinien otrzymywać go z magazynu kluczy utworzonego w projekcie. Dlatego mówi ci, że skrót klucza nie jest zarejestrowany.

Zgodnie z sugestią Madi , możesz wykonać czynności opisane w tym linku, aby znaleźć odpowiedni klucz. Pamiętaj, aby skierować je do magazynu kluczy w swoim projekcie. W przeciwnym razie nie dostaniesz odpowiedniego klucza.


3

Poniższy kod da ci skrót do Facebooka, ale musisz wykonać te kroki, aby uzyskać skrót do wydania kandydata.

  1. Skopiuj i wklej ten kod w głównej działalności

    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. Wygeneruj podpisany plik APK .

  3. Podłącz telefon do laptopa i upewnij się, że pozostaje w kontakcie.
  4. Zainstaluj i uruchom plik APK w telefonie, ręcznie przenosząc wersję APK na telefon.
  5. Teraz spójrz na Android LogCat (użyj filtru KeyHash:) . Powinieneś zobaczyć klucz skrótu do wydania na Facebooku. Po prostu skopiuj i wklej go w swoim https://developers.facebook.com/apps. Jest pod ustawieniami.
  6. Teraz możesz przetestować aplikację, która powinna działać idealnie.

Uwaga: kod działa tylko wtedy, gdy wygenerujesz podpisany apk. w przeciwnym razie da ci tylko debugowanie skrótu apk, który jest bezużyteczny dla wydanego apk
abdul jalil

Cześć, kiedy podałem wygenerowany skrót do aplikacji na Facebooku, działa dobrze, ale kiedy próbuję uruchomić na innym urządzeniu, znowu pokazuje „NIEPRAWIDŁOWY KLUCZ HASH”, w jaki sposób mogę ustawić klucz skrótu dla zawartości facebooka do pracy na wszystkich urządzeniach.
Deepak

2

Po długich badaniach znaleźliśmy rozwiązanie.

Ustawiliśmy uprawnienia jako:

loginButton.setReadPermissions(public_profile email);

Działa to po raz pierwszy, ale kiedy ponownie zalogowaliśmy się na Facebooku, wystąpił błąd nieprawidłowego skrótu .

Prostym rozwiązaniem była zmiana powyższej linii na:

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

I działało to jak rozkosz!

Facebook powinien zwrócić poprawny wyjątek zamiast wprowadzającego w błąd nieprawidłowego klucza skrótu.


Mam ten sam problem. Wypróbowałem twoje rozwiązanie, ale nadal nie mogę rozwiązać mojego problemu @ user3663906
BekaKK

2

Po tylu próbach natknąłem się na rozwiązanie tego. Wygenerowałem i dodałem klucze debugowania i zwolnienia do konsoli programisty Facebooka i nadal otrzymałem błąd.

Jedynym rozwiązaniem, które działało dla mnie, było odinstalowanie programu OpenSSL z Google i pobranie go z Win32 / Win64 OpenSSL Installer dla Windows

To naprawdę działa jak magia.


2

Chociaż na to pytanie udzielono wielu pomocnych sposobów, chciałem tylko dodać, że kiedy podążyłem za odpowiedzią Rafała Maleksa (używając klawiszy skrótu w Konsoli Google Play), NIE byłem w stanie użyć klucza SHA1 do podpisywania aplikacji, nadal mam ogólny błąd z Facebooka. Zamiast tego musiałem użyć odcisku palca certyfikatu SHA-1 z części Prześlij certyfikat (tuż pod częścią Podpisywanie aplikacji w konsoli Google Play). W przeciwnym razie ten sam proces;

  1. Skopiuj odcisk palca certyfikatu SHA-1 z sekcji Prześlij certyfikat w konsoli Google Play

  2. Konwertuj SHA-1 za pomocą: http://tomeko.net/online_tools/hex_to_base64.php i skopiuj dane wyjściowe (base64)

  3. Wklej go do wejścia Kluczowe skróty na developer.facebook.com i zapisz zmiany.

Mamy nadzieję, że ta odpowiedź nie jest zbyteczna i pomoże komuś, kto nie może zmusić jej do współpracy z certyfikatem podpisywania aplikacji.

Teraz logowanie do Facebooka działa w mojej aplikacji zarówno w trybie debugowania, jak i wydania.


1

Wklej następujący kod do metody 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();
}

Wystarczy zmodyfikować nazwę pakietu. Następnie przejdź do pliku LogCat i wybierz tutaj Wyszukiwanie debugowania. Następnie znajdziesz klucz skrótu. Teraz skopiuj ten klucz skrótu, a następnie przejdź do strony developer.facebook.app_id, edytuj klucz skrótu i ​​naciśnij Save. Teraz uruchom ponownie projekt na Androida. Myślę, że problem zostanie rozwiązany.


7
powtarzając drugiego faceta
Beto Caldas,

1

Może to pomóc komuś z tym samym problemem.

  1. Wygeneruj skrót klucza za pomocą poniższego kodu

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

    Jak korzystać z keytool

  2. Wklej to w wymagane pole w twórcy Facebooka

  3. W Android Studio, menu PlikStruktura projektu

    Wpisz opis zdjęcia tutaj

    Dodaj parametry podpisywania.

  4. Wybierz smaki

    Wpisz opis zdjęcia tutaj

    Wybierz utworzoną konfigurację podpisywania.

  5. Wybierz typ kompilacji

    Wpisz opis zdjęcia tutaj

  6. Wybierz wariant kompilacji i zbuduj go

    Wpisz opis zdjęcia tutaj


1

Miałem ten sam problem podczas debugowania mojej aplikacji. Przepisałem skrót, który przekreśliłeś na załączonym obrazku (ten, który według Facebooka jest nieprawidłowy) i dodałem go w konsoli programistów Facebooka do skrótów kluczowych. Uważaj na literówki.

To rozwiązanie jest raczej prostym obejściem niż właściwym rozwiązaniem.


1

Jeśli wpisujesz kombinację klawiszy ręcznie (na przykład z telefonu komórkowego do panelu Facebooka), pamiętaj, aby odróżnić małą literę L od dużej litery 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

To, czego używał Facebook, nie jest domyślnym hasłem i aliasem do debugowania. Musisz to zmienić w następujący sposób i będzie działać.

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

Jeśli nic nie zmieniłeś przy użyciu domyślnego hasła, powinno to być „android” .

Możesz go również skonfigurować w pliku build.gradle. Ale do wygenerowania skrótu należy użyć tego samego hasła aliasu:

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

0

Oto wiele poprawnych odpowiedzi. Tylko jedna rzecz:

Wklej otrzymany skrót w aplikacjiUstawieniaGłówny , a nie w samouczku szybkiego startu.


0

Miałem ten sam problem.

Upewnij się, że budujesz plik APK na tym samym urządzeniu, które wygenerowało klucz skrótu, który jest przechowywany w sekcji dla programistów Facebooka.


0

Naprawiłem to, dodając następujące elementy do 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");
}

Następnie przesłałem to do konsoli programisty Google, a następnie pobrałem wyprowadzony pakiet APK, który z jakiegokolwiek powodu ma zupełnie inny skrót klucza.

Następnie użyłem LogCat do ustalenia nowego skrótu klucza i dodałem go do Facebooka, jak opisali inni użytkownicy.


0

Jeśli generujesz skróty kluczy wydania, upewnij się, że podałeś rzeczywiste hasło do swojego magazynu kluczy, a nie „android”.

To był mój problem. Wersja debugowania działała, ale wersja APK nie działała.


-1

Użyj poniższego kodu w metodzie onCreate () swojej aktywności:

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

Uruchom ten kod. Spowoduje to wygenerowanie klucza skrótu. Skopiuj ten KeyHash w ustawieniach aplikacji Facebook i zapisz zmiany. Następnie zaloguj się do swojej aplikacji. Będzie to również działać doskonale w przyszłości.


3
powtarzanie drugiego faceta
Beto Caldas
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.