Pytanie Aplikacja jest źle skonfigurowana do logowania na Facebooku: problem z integracją z Androidem Facebook


Zintegrowam moją aplikację z Facebookiem i do tego używam Facebooka Graph API. Pobieram informacje o profilach i znajomych. Działa to 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 Facebookiem za pośrednictwem mojej aplikacji. On ma Android 4.0 (Ice Cream Sandwich) na swoim urządzeniu. Kiedy kliknie przycisk na aplikacji, która przenosi go do ekranu logowania na Facebooku, po zalogowaniu otrzyma wiadomość:

Moja aplikacja jest błędnie skonfigurowana do logowania na Facebooku. Naciśnij OK, aby wrócić do aplikacji bez łączenia się z Facebookiem.

Facebook error message

Nie dostaję problemu, niezależnie od tego, czy jest on związany z wersją Androida, czy z czym.

Jak mogę rozwiązać ten problem?


76
2017-09-12 06:46


pochodzenie


Jesteś pewien, że nie jest to związane z SSO? Miałem ten sam problem, który działał dobrze, gdy aplikacja FB nie była zainstalowana, ale kiedy zainstalowano aplikację FB, otrzymałem błąd powyżej. - Christer Nordvik
@ AB1209, zaakceptowana odpowiedź jest nieprawidłową odpowiedzią na twoje pytanie. Poniżej przedstawiamy moją odpowiedź i nie używam zaakceptowanej odpowiedzi jako rozwiązania. - Jesse Chen
@JesseChen, Dziękuję bardzo za wskazówki. - AB1209
@ AB1209 hii, możesz po prostu nie zaakceptować odpowiedzi, jeśli jakieś ciało chce wiedzieć, że może to zrobić w niewłaściwy sposób ... - BBdev
Rzeczywiście, ten błąd występuje również we własnych próbach SDK na Facebooku! Domyśl. - Igor Ganapolsky


Odpowiedzi:


Pracuję na Facebooku i jest to ważna kwestia, którą należy się zająć. 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ą wykraść dane uwierzytelniające użytkownika Facebooka.

Hack uruchamia okno dialogowe WebView na Facebooku bez SSO, a użytkownik musi wpisać swoje dane logowania w tym oknie dialogowym. Złośliwe aplikacje mogą łatwo ukraść te informacje. Zawsze zaleca się wdrożenie Facebook SSO poprawnie, aby zapewnić, że aplikacja jest bezpieczna i chronić poufne dane użytkownika.

Przed dodaniem tego komunikatu o błędzie okno dialogowe automatycznie zamknie się bez ostrzeżenia i nie powiedzie się po cichu. Dodaliśmy ten komunikat o błędzie, aby wyświetlić wizualnie, że wystąpił problem z konfiguracją Twojej aplikacji na pulpicie nawigacyjnym aplikacji Facebook. W przypadku Androida, jeśli sprawdzisz swoje LogCatzobaczysz, że po naciśnięciu "Okay" powinien pojawić się komunikat o błędzie, który wyświetli bardziej techniczny opis przyczyny niepowodzenia uwierzytelnienia.

Na przykład, jeśli użyjesz naszego przykładu na Hackbook i nie dostarczysz swojego własnego APP_ID w źródle i nie dodasz swojego klucza do tablicy kontrolnej, zobaczysz ten błąd w LogCat po naciśnięciu "Okay" w oknie dialogowym native SSO (jeśli Util.ENABLE_LOG ma wartość true):

Autoryzacja D / Facebook (24739): Logowanie nie powiodło się: invalid_key: Niezgodność klucza Androida. Twój klucz "uk3udeH7vrOGNFH2FJjdJbdWJWI" nie pasuje do dozwolonych kluczy określonych w ustawieniach aplikacji. Sprawdź ustawienia aplikacji na http://www.facebook.com/developers

Dodaliśmy wizualny komunikat o błędzie, aby Ci pomóc. To, teoretycznie, nie przerwie poprzednich implementacji jeśli został poprawnie wdrożony na początku. Jeśli widzisz ten komunikat o błędzie, oznacza to, że nie skonfigurowałeś poprawnie ustawień aplikacji twój pulpit nawigacyjny.
Sprawdź dokładnie swoją klasę / nazwę pakietu Android, skróty klawiszowe Androida itp. Nie zobaczysz tego komunikatu, jeśli zrobiłeś wszystko poprawnie.

W podsumowaniu, otrzymujesz komunikat o błędzie, ponieważ wystąpił problem z konfiguracją Twojej aplikacji, na przykład niezgodność między hashami Androida na pulpicie nawigacyjnym. Zanim Facebook dodał ten komunikat o błędzie, okno dialogowe uruchomi się, a następnie automatycznie zamknie i zakończy się niepowodzeniem. Aby to naprawić, sprawdź LogCat pod kątem wszelkich komunikatów o błędach i upewnij się, że wszystko zostało poprawnie zaimplementowane. Możesz przeczytać dalej nasza dokumentacja aby upewnić się, że wszystko jest poprawne. Nie używaj zaakceptowanej odpowiedzi na to pytanie.

Możesz także podążać za zewnętrzny raport o błędzie że deweloper Facebooka zgłosił więcej aktualizacji.


90
2017-09-15 02:01



Cześć, to jest Shireesh z Facebooka. Zgadzam się z Jessem tutaj. Proszę nie stosować się do zaakceptowanej odpowiedzi tutaj. Jest to zdecydowanie problem z ustawieniami aplikacji. Zalogować błąd i zobaczyć szczegóły. Pomoże Ci to rozwiązać problem zarówno na systemie Android, jak i iOS. - Shireesh Asthana
FWIW Miałem również ten problem; Rozwiązałem go, usuwając wszystkie skróty i ponownie budując moje klucze programistyczne i produkcyjne i dodając je do portalu fb dev. +1 dla tej odpowiedzi - Nirvana Tikku
Problem rozwiązany. Niż za dane wejściowe. Jestem nowy w rozwoju Androida. Dostarczone przeze mnie rozwiązanie "rozwiązuje" problem, ale stwarza inne problemy. - rmcc
W mojej sytuacji był to nieprawidłowy obszar nazw aplikacji ios. - Almas Adilbek
Ten facet wie, o czym mówi. Miałem ten sam problem i odkryłem, że mój token / klucz / cokolwiek jest niepoprawny z powodu złej wersji openSSL. po naprawieniu ta wiadomość zniknęła. Dzięki Jesse! - Evan R.


Spróbuj ustawić tak:

Pierwsze pobranie OpenSSL (jeśli masz maszynę 64-bitową, musisz ją pobrać openssl-0.9.8e X64, nie najnowsza wersja, openssl-0.9.8k X64, ponieważ dane wyjściowe nie będą poprawne). Wyodrębnij pliki, utwórz folder opensslna przykład w C: / i tam kopiować pliki.

Znajdź swoją ścieżkę do keytoo. Mój jest C: \ Program Files \ Java \ jdk1.7.0_05 \ bin.

Znajdź swoją ścieżkę debug.keystore. YHou można zobaczyć, co jest ścieżka, jeśli otworzysz w Eclipse, menu Okno -> Preferencje -> Android -> Budować, i zobaczysz Domyślny magazyn kluczy debugowania:i ścieżkę.

Znajdź swoją ścieżkę 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, a następnie naciśnij Wchodzić.

Wstaw hasło: android

Otrzymasz swój klucz hash dla debug.keystore.

Podczas eksportowania podpisu APKi tworzysz magazyn kluczy dla aplikacji, po prostu zamień w aliasie cmd debugkeystore swój alias dla aplikacji, ścieżkę magazynu kluczy ze ścieżką do nowo utworzonego magazynu kluczy aplikacji i wstaw hasło do swojego app.keystore, a otrzymasz nowy klucz skrótu do podpisanej aplikacji.


15
2017-09-23 14:24



Jedno rozwiązanie, które zadziałało dla mnie ... The openssl-0.9.8e X64 jest ważne. - Baseer
Miałem ten problem, w wersji k pojawił się nieprawidłowy hasz. Dziękujemy za znalezienie tego! - SimpsOff
Kocham cię, to pomogło ci tylko w końcu. - Prateek


Odpowiedź Jesse Chena jest w porządku. Facebooks SDK działa dobrze, nie rób tego.

Ponownie natknąłem się na ten problem i dowiedziałem się, że dokumentacja SDK Facebooka jest poprawiona i teraz jest bardzo dobrze. Teraz prowadzi, jak można debugować i wydawać klucze mieszające; po prostu rób tak, jak to mówi.

Poniżej jest moja stara historia. Brakuje, że możesz ustawić dwa klawisze skrótu, jeden do debugowania i jeden do podpisanej, zwolnionej aplikacji do starego Sklep Play.


Dowiedziałem się o tym problemie był w moim przypadku w dokumentacji pakietu Facebook SDK. Poprowadził nas do użycia skrótu klawiszowego debugowania i umieszczenia go w konfiguracji aplikacji Facebooka. Hash jest prowadzony, aby uzyskać 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ę Zaćmienie.

Jeśli jednak opublikujesz aplikację w Andoid Play, musisz wyeksportować podpisany plik .apk za pomocą własnego klucza wydawcy. Dzięki temu .apk, hash w konsoli aplikacji Facebooka jest już nieważny! Musisz uzyskać skrót dla klucza programisty w następujący 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. Następnie SSO znów działa poprawnie dla twojego podpisanego pliku .apk.


12
2017-09-24 20:09





Z tego, co udało mi się zebrać, wynika, że ​​jest to problem na Facebooku i został zgłoszony. Ale problem utrzymuje się.

Sposób obejścia tego (testowany w wersji 2.3.3) polega na zhakowaniu w pakiecie SDK Facebooka, poszukaj w 2 autoryzować metody i zmień DEFAULT_AUTH_ACTIVITY_CODE do FORCE_DIALOG_AUTH. Spowoduje to wyłączenie funkcji pojedynczego logowania.

Jeśli wolisz

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

i wyłącza startSingleSignOn część. Lepiej nie, ponieważ ostatecznie Facebook rozwiąże problem, a ty musisz tylko przywrócić stare.

EDYTOWAĆ

To rozwiązanie powoduje problemy z bezpieczeństwem. Sprawdź odpowiedź Jessego Chena.


8
2017-09-12 16:34



To działa dzięki. Mam jednak nadzieję, że Facebook rozwiąże ten problem. - AB1209
Też mam nadzieję. SSO zapewnia ładną funkcjonalność, ale jest zepsuty ... - rmcc
Cześć wszystkim, pracuję na Facebooku i nie zalecamy używania tego hacka. Jest to problem dotyczący bezpieczeństwa i może narazić na szwank dane użytkownika Facebooka. Poniżej zamieściłem bardziej szczegółową odpowiedź. - Jesse Chen


Miałem ten sam problem, 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.nazwa_firmy.nazwa_użytkownika

  2. użyj tego samego identyfikatora pakietu com.yourcompanyname.yourappname do tworzenia aplikacji na Facebooku patrz załącznik.

enter image description here


5
2017-12-21 05:02



to jest ANdroid, a nie iOS - jesses.co.tt


Ten problem pojawił się kilka minut temu w wersji 4.0.4 i wydaje się, że sam się rozwiązał.


3
2017-09-12 13:03



Dokładnie to samo tutaj. Myślę, że Facebook miał czkawkę. - Sander van't Veer
Obcy tutaj - jedno z moich urządzeń pokazuje ten problem. Pozostałe logi są w porządku. Kod jest w 100% taki sam. Odkąd ich IPO wszystko poszło w dół :) - Vaiden
mam ten sam problem. gdy aplikacja Facebook. jest zainstalowany ten komunikat. - eyal


Chociaż późno, nadal przydatne: *Oto sposób rutynowego działania (w przypadku klucza debugowania należy odpowiednio zmienić w celu 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 jest w ostatnim wygenerowanym pliku: debug_base64.txt .... otwórz i skopiuj hasz.

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


3
2018-01-24 04:05





Kiedy utworzysz kluczowy 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ęść kluczowego skrótu, musisz go usunąć, aby działał.

Dodatkowo sprawdź akceptowaną odpowiedź Android Facebook SDK 3.0 daje "remote_app_id nie pasuje do przechowywanego id" podczas logowania: podczas pobierania skrótu kluczy do debugowanego pliku kluczy użyj hasła "android". W przeciwnym razie kluczowy hash będzie niepoprawny, a otrzymasz błąd określony w pytaniu (bądź miły i zagłoś tam odpowiedź, jeśli ci to pomogło).


2
2017-12-27 10:48





Dotyczy aplikacji podpisanych przy użyciu magazynu kluczy OWN: Po kilku godzinach rozwiązywania tego problemu w końcu go otrzymałem i chcę udzielić odpowiedzi tym, którzy wciąż cierpią:

Moje kroki: Podpisałem swoją aplikację za pośrednictwem środowiska Eclipse za pomocą własnego pliku kluczy (NOT debug.keystore). Przez linię poleceń i znane polecenia (keytool -exportcert -alias -keystore ~ ​​/ .android / | openssl sha1 -binary | openssl base64) pomyślnie otrzymałem kluczowy skrót. Wkleiłem kluczowy hash w pulpicie dev, odczekałem kilka minut -> Nadal ten sam BŁĄD (jak podano w powyższym pytaniu). Próbowałem kilku różnych kluczyków, w kilku jdkach itp. ... nic się nie zmieniło.

Rozwiązanie: Włączyłem debuggable in manifest, włączyłem debugowanie na facebook sdk. następnie podpisałem apk z własnym magazynem kluczy 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 aplikację i zezwalam na pojawienie się komunikatu o błędzie. Wydaje klucz zupełnie inny niż klucz generowany przez keytool. Wziąłem ten klucz z logcat, wkleiłem go do deski rozdzielczej dev i voila -> WSZYSTKO DZIAŁA

Nadal nie wiem, dlaczego tak się dzieje lub co powoduje niewłaściwy klucz, ale w ten sposób działa dla mnie.


1
2017-10-05 00:15





W systemie Debian takim jak ubuntu użyj keytool z java znaleźć w katalogu /usr/lib/jvm/jdk*.*.*/bin/keytool i generować w ten sposób

/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ć w haszyszu aplikacji na Facebooku.


1
2017-12-16 09:08