Facebook: Facebook integration problem z Androidem

Facebook jest Facebook ' iem, który integruje moją aplikację z Facebookiem i do tego wykorzystuje graficzne API Facebooka . Odzyskuję informacje o profilu i znajomych. Działa dobrze na moim urządzeniu, które ma Android 2.3 (Gingerbread), ale ostatnio mój klient napotkał problem, gdy próbuje połączyć się z Facebook za pośrednictwem mojej aplikacji. Ma na swoim urządzeniu Androida 4.0 (Ice Cream Sandwich). Po kliknięciu przycisku w aplikacji, który przenosi go na ekran logowania Facebook, po zalogowaniu dostaje wiadomość:

[[0]}Moja aplikacja jest źle skonfigurowana do logowania na Facebook. Naciśnij OK, aby wrócić do aplikacji bez łączenia się z Facebook.

Komunikat o błędzie Facebook

Nie rozumiem jaki jest problem, czy jest to związane z wersją Androida, czy co.

Jak mogę rozwiązać ten problem?

Author: Peter Mortensen, 2012-09-12

18 answers

Pracuję w Facebook i jest to ważna kwestia, którą należy rozwiązać. Inna odpowiedź na to pytanie sugeruje, że wyłączenie SSO jest bardzo złe i otworzy Twoją aplikację na złośliwe aplikacje, które mogą ukraść Twoje dane uwierzytelniające Facebook.

Hack uruchamia okno WebView na Facebook bez SSO, a użytkownik musi wpisać swoje dane logowania do tego okna. Złośliwe aplikacje mogą następnie łatwo ukraść te informacje. Zawsze zaleca się wdrożenie Facebook SSO prawidłowo, aby upewnić się, że aplikacja jest bezpieczna i chronić poufne dane użytkownika.

Przed dodaniem tego komunikatu o błędzie okno dialogowe automatycznie zamykało się bez ostrzeżenia i zawierało po cichu. Dodaliśmy ten Komunikat o błędzie, aby wizualnie wyświetlić, że występuje problem z konfiguracją aplikacji na pulpicie aplikacji Facebook. W przypadku Androida, jeśli sprawdzisz swój LogCat , zobaczysz, że po naciśnięciu " OK " powinien pojawić się komunikat o błędzie, który wyświetli bardziej techniczny opis przyczyny niepowodzenia uwierzytelniania.

Na przykład, jeśli użyjesz naszego przykładu Hackbooka i nie podasz własnego APP_ID w źródle i nie dodasz swojego klucza hashowego do Pulpitu nawigacyjnego, zobaczysz ten błąd w LogCat po naciśnięciu "Okay"w natywnym oknie dialogowym SSO (jeśli Util.ENABLE_LOG jest ustawione na true):

[[0]] D/Facebook-authorize(24739): Logowanie nie powiodło się:invalid_key: błąd klucza Androida. Twój klucz "uk3udeH7vrOGNFH2FJjdJbdWJWI" nie pasuje do dozwolonych kluczy określone w ustawieniach aplikacji. Sprawdź ustawienia aplikacji na http://www.facebook.com/developers

Dodaliśmy wizualny komunikat o błędzie, aby ci pomóc. To, w teorii, nie łamie poprzednich implementacji , jeśli zostało poprawnie zaimplementowane na początku. Jeśli widzisz ten Komunikat o błędzie, oznacza to, że ustawienia aplikacji nie zostały poprawnie skonfigurowane na na pulpicie nawigacyjnym.
Sprawdź dokładnie nazwę klasy/pakietu Androida, Klucze Hashowe Androida, itd. Nie zobaczysz tej wiadomości, Jeśli zrobiłeś wszystko poprawnie.

W podsumowaniu otrzymujesz ten Komunikat o błędzie, ponieważ wystąpił problem z konfiguracją aplikacji, na przykład niedopasowanie między klawiszami skrótu Androida w pulpicie nawigacyjnym. Zanim Facebook dodał ten Komunikat o błędzie, okno dialogowe zostanie uruchomione, a następnie automatycznie zamknięte i zawiedzie. Aby to naprawić, sprawdź LogCat pod kątem komunikatów o błędach i upewnij się, że wszystko zostało poprawnie zaimplementowane. Możesz przeczytać na naszej dokumentacji , aby upewnić się, że wszystko jest poprawne. Nie używaj zaakceptowanej odpowiedzi na to pytanie.

Możesz również śledzić zewnętrzny raport o błędzie , który programista Facebook zgłosił w celu uzyskania dalszych aktualizacji.

 90
Author: Jesse Chen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-30 18:11:11

Spróbuj ustawić to tak:

Najpierw pobierz OpenSSL (jeśli masz 64-bitową maszynę musisz pobrać openssl-0.9.8 e X64, a nie najnowszą wersję, openssl-0.9.8 K X64, ponieważ wyjście nie będzie poprawne). Rozpakuj swoje pliki, utwórz folder openssl, Na przykład w C: / i skopiuj tam pliki.

Znajdź swoją drogę do keytoo. Mój jest C:\Program Files\Java \ jdk1.7. 0_05 \ bin.

Znajdź swoją drogę do debug.keystore. YHou może zobaczyć, co to jest ścieżka, jeśli otworzysz w Eclipse, menu okno -> Preferencje -> Android -> Zbuduj , a zobaczysz domyślny klucz debugowania: - i ścieżkę.

Znajdź swoją drogę do openssl. Mój jest C:\openssl8e\bin/

Otwórz cmd i wpisz:

"C:\Program Files \ Java \ jdk1. 7. 0_05 \ bin \ keytool" - exportcert-alias androiddebugkey-keystore "C:\Users\User.Android\debug.keystore " | "C:\openssl8e\bin\openssl" sha1-binary / "C:\openssl8e\bin\openssl" base64

A następnie naciśnij Enter .

Wstaw hasło: android

Otrzymasz swój klucz hashowy dla debug.keystore.

Po wyeksportowaniu podpisanego pliku apk i utworzeniu magazynu kluczowego dla aplikacji, po prostu zastąp w CMD Alias debugkeystore swoim aliasem dla aplikacji, ścieżkę do magazynu kluczowego ze ścieżką do nowo utworzonego magazynu kluczowego dla aplikacji i wprowadź hasło do app.keystore, a otrzymasz nowy klucz hash dla podpisanej aplikacji.

 15
Author: pandabear,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-30 18:18:20

Odpowiedź Jesse ' ego Chena jest w porządku. Facebooks SDK działa dobrze, nie zepsuj go.

Ponownie natknąłem się na ten problem i dowiedziałem się, że dokumentacja Facebook SDK jest poprawiona i jest teraz bardzo dobra. Teraz jest przewodnikiem, jak debugować i zwolnić klucze hash mogą być ustawione; po prostu zrobić, jak mówi.

Poniżej moja stara historia. Brakuje, że można ustawić dwa klucze skrótu, jeden do debugowania i jeden do podpisanej, wydanej aplikacji dla starego Play Store .

Znalazłem out ten problem był w moim przypadku w dokumentacji Facebook SDK. Poprowadził nas do użycia klucza debug hash i umieścić go w konfiguracji aplikacji Facebook. Hash jest prowadzony w ten sposób:

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

Działa to dobrze, gdy dubugujesz lub uruchamiasz aplikację z Eclipse .

Ale jeśli publikujesz swoją aplikację w Andoid Play, musisz użyć własnego klucza wydawcy, aby wyeksportować podpisaną aplikację .plik apk. Z tym .apk, hash w konsoli aplikacji Facebook nie jest ważne już! Musisz uzyskać hash dla klucza programisty w ten sposób:

keytool -exportcert -alias <developer alias> -keystore ~/.android/<developer keystore> | openssl sha1 -binary | openssl base64

I umieść go w Android Key Hash w konsoli aplikacji Facebook dla opublikowanej aplikacji. Po tym, SSO działa dobrze ponownie dla podpisanego .plik apk.

 12
Author: Reijo Korhonen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-30 18:28:57

Z tego, co mogłem się domyślić, to problem Facebook i został zgłoszony. Ale problem nie ustaje.

Sposobem obejścia tego (testowane na 2.3.3) jest włamanie na Facebook SDK, seach dla 2 autoryzować Metody i zmienić DEFAULT_AUTH_ACTIVITY_CODE do FORCE_DIALOG_AUTH . Spowoduje to wyłączenie funkcji jednokrotnego logowania.

If your preference got to

public void authorize(Activity activity, String[] permissions,
            int activityCode, final DialogListener listener) 

I wyłączyć część startową . Lepiej nie, bo w końcu Facebook rozwiąże problem, a ty musisz tylko przywrócić starą stałą.

EDIT

To rozwiązanie powoduje problemy z bezpieczeństwem. Sprawdź odpowiedź Jesse ' ego Chena.

 8
Author: rmcc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-20 10:20:21

Spotkałem się z tym samym problemem, po spędzeniu 24 godzin i wielu poszukiwaniach używamy tej metody, aby rozwiązać mój problem.

  1. Sprawdź aktualny identyfikator pakietu projektu Xcode na przykład: com.Twoja firma.yourappname

  2. Użyj tego samego komunikatora.Twoja firma.yourappname identyfikator pakietu do tworzenia aplikacji w Facebook patrz załącznik.

Tutaj wpisz opis obrazka

 5
Author: 9to5ios,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-14 19:09:14

Sam miałem ten problem kilka minut temu na 4.0.4 i wydaje się, że sam się rozwiązał.

 3
Author: haupman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-12 13:03:52

Chociaż późno, nadal przydatne: * oto sposób na zrobienie corerct(w przypadku debug key, zmień odpowiednio dla wydania):*

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\<User>\.android\debug.keystore" > <Drive letter>:\debug.txt
openssl sha1 -binary "<Drive letter>:\debug.txt" > "<Drive letter>:\debug_sha.txt"
openssl base64 -in "<Drive letter>:\debug_sha.txt" > "<Drive letter>:\debug_base64.txt"

Hash znajduje się w ostatnio wygenerowanym pliku: debug_base64.txt....Otwórz i skopiuj hash.

Pamiętaj, aby zastąpić "" oraz swoją nazwę użytkownika i wybraną literę dysku

 3
Author: Nitin Bansal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-24 04:05:09

Kiedy tworzysz klucz hash, możesz skończyć z czymś, co ma znak równości " = " na końcu, jak ga0RGNYHvNM5d0SLGQfpQWAPGJ8=. Podczas gdy Facebook chętnie akceptuje znak równości jako część klucza hash, musisz go usunąć, aby działał.

DODATKOWO sprawdź akceptowaną odpowiedź na Android Facebook SDK 3.0 daje "remote_app_id nie pasuje do przechowywanego identyfikatora" podczas logowania: po uzyskaniu hash klucza dla magazynu kluczy debugowania, użyj hasło "android". W przeciwnym razie kluczowy hash będzie nieprawidłowy i otrzymasz błąd określony w pytaniu (bądź miły i zagłosuj tam na odpowiedź, jeśli ci to pomogło.)

 2
Author: gnobal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:52:50

Odnośnie aplikacji podpisanych własnym keystore: Po spędzeniu kilku godzin na rozwiązywaniu tego problemu, w końcu go dostałem i chcę udzielić odpowiedzi dla tych, którzy nadal cierpią: {]}

Moje kroki: Podpisałem swoją aplikację przez eclipse z moim własnym plikiem keystore (nie debugować.keystore). Poprzez wiersz poleceń i znane polecenia (keytool-exportcert-alias-keystore ~/.android/ | OpenSSL sha1-binary | OpenSSL base64) i successfulluy received the key hash. Wklejenie hasha klucza do dev dashboard, czekanie a kilka minut - > nadal ten sam błąd (jak określono w pytaniu powyżej). próbowałem kilka differend keytools, na kilku JDK, itp... nic się nie zmieniło.

Rozwiązanie: Włączyłem debuggable w manifeście, włączyłem debugowanie w facebook sdk. następnie podpisałem apk własnym keystore i przesłałem go na prawdziwe urządzenie. podłączyłem urządzenie przez usb i otworzyłem perspektywę DDMS, aby zobaczyć logcat na urządzeniu.
Uruchomiłem moją aplikację i niech pojawi się komunikat o błędzie. Drukuje klucz zupełnie inny od klucz generowany przez keytool. Wziąłem ten klucz z logcat, wkleiłem go do dev dashboard i voila - > wszystko działa

Nadal Nie wiem, dlaczego tak się dzieje i co powoduje zły klucz, ale w ten sposób działa na mnie.

 1
Author: Niklas Mencke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-05 00:15:30

W systemie Debian jak ubuntu użyj keytool z java znaleźć w katalogu /usr/lib/jvm/jdk*.*.*/bin/keytool i wygenerować tak

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

W ten sposób otrzymasz autentyczny klucz hash, który można umieścić pod hash aplikacji facebook.

 1
Author: laaptu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-16 09:08:07

Zazwyczaj problem ten można rozwiązać za pomocą dwóch sprawdzeń:

    Facebook-Facebook, w którym można publikować konfigurację Facebooka na żywo.]}
  • niedopasowanie klucza api
 1
Author: aorlando,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-13 14:52:00

Udało mi się rozwiązać problem, który miałem z misconfigured dla Facebook na Androida, upewniając się, że mam poprawny klucz hashowy dla wersji release.

Aby uzyskać klucz skrótu wersji release, znajdź klucz użyty do podpisania aplikacji i wykonaj następujące czynności, wpisz nazwę aliasu keystore (bez nawiasów). Jeśli nie znasz swojego aliasu, możesz go znaleźć, eksportując aplikację jako podpisaną aplikację, a alias znajduje się na drugiej stronie kreatora. Również Wstaw ścieżkę do swojego keystore (bez nawiasów).

keytool -exportcert -alias [Alias of your keystore] -keystore [Path to keystore] | openssl sha1 -binary | openssl base64
 1
Author: Jonathan Ogle-Barrington,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-30 18:13:46

Zrobiłem Toast dla wyjątków i okazało się, że rzuca wyjątek niedopasowania klucza dzisiaj dodał klucz na stronie aplikacji FB i działa dobrze

 0
Author: Hari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-01 05:07:16

Również napotkał ten problem.

Po prostu przejdź do strony Facebook developers getting started TUTAJ

I wykonaj krok 4-rzecz z wiersza poleceń.

Zadziałało dla mnie.

Enjoy.

 0
Author: Michael Assraf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-26 20:54:11

Właśnie miałem ten sam problem i rozwiązanie okazało się super proste. Kiedy utworzyłem aplikację na pulpicie nawigacyjnym, dodałem tylko hash klucza dla klucza debugowania Androida. To wszystko działa dobrze, jeśli zainstalujesz aplikację jako deweloper za pomocą kabla USB w tym przypadku.

Gdy masz aplikację w Sklepie Play, użyjesz klucza produkcyjnego do podpisania aplikacji. Oznacza to również, że musisz uzyskać hash klucza produkcyjnego jak dla klucza debug i dodać go jako drugi hash do lista natywnych skrótów aplikacji.

Żeby pamiętać jak działa hash klucza: keytool-exportcert-alias-keystore ~/keys/android_keystore | openssl sha1-binary | OpenSSL base64

Mam nadzieję, że to pomoże!

 0
Author: Sven Haiges,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-31 08:13:25

Miałem podobny problem, ale na iOS.

Facebook facebook developer daskboard-rozwiązanie polegające na skonfigurowaniu aplikacji na Facebooku.

Dla iOS, 2 rzeczy muszą być zrobione:

  1. Włączone Logowanie Na Facebook

  2. Identyfikator pakietu musi być taki sam jak aplikacja

 0
Author: samwize,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-12 00:56:40

To problem z keystore..Skonfiguruj swój eclipse tak, aby używał tego samego keystore, dla którego aplikacja została skonfigurowana.

 0
Author: oneConsciousness,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-17 06:52:27

Dostałem ten sam błąd kilka dni temu. W moim przypadku było to spowodowane niedopasowaniem klucza Androida. Oto jak to naprawiłem, jeśli to może Ci pomóc:

Otwórz Util.java w Facebook SDK, set private static boolean ENABLE_LOG = true;. Teraz uruchom aplikację i wprowadź swój identyfikator e-mail i hasło. Facebook odsyła podpis, jeśli wystąpi kluczowa niezgodność. Ten klucz (podpis) znajdziesz w LogCat . Wystarczy skopiować ten klucz i wkleić go w panelu aplikacji. To powinno rozwiązać problem. Pamiętaj, aby ustawić private static boolean ENABLE_LOG = true; z powrotem na false.

 0
Author: Srinivas Kattimani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-30 18:20:32