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:
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");
}
Odpowiedzi:
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()
.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.
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) .
źródło
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
źródło
echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Jeśli napotykasz ten problem, umieść ten klucz w developer.facebook.com :
Następnie upewnij się, że Twoja aplikacja jest dostępna na stronie developer.facebook.com .
To zielone kółko oznacza, że aplikacja jest aktywna:
Jeśli tak nie jest, wykonaj następujące dwa kroki, aby uruchomić aplikację:
Krok 1 Przejdź do aplikacji → ustawienie → dodaj 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:
Uwaga: Jeśli chcesz skopiować klucz skrótu, zaznacz BlueServiceQueue w LogCat .
źródło
BlueServiceQueue
w logcatMam 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 -
Wprowadź hasło do magazynu kluczy: „android”
----- Aby wygenerować skrót klucza Release , użyj tego polecenia -
Podaj hasło do magazynu kluczy po wykonaniu tego polecenia.
źródło
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:
upewnij się, że sprawdziłeś wszystkie właściwości -
HOMEPATH
istnienie 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.
źródło
Zgodnie z loginem Facebooka dla Androida musisz podać kluczową wartość skrótu. Aby go uzyskać, będziesz potrzebować klucza użytego do podpisania aplikacji.
źródło
Musisz utworzyć dwa kluczowe skróty, jeden do debugowania i jeden do wydania.
Dla skrótu klucza debugowania :
W systemie OS X uruchom:
W systemie Windows uruchom:
Ź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) :W systemie Windows użyj (zamień to, co pomiędzy
<>
na wartości) :Zwolnij źródło skrótów klucza
źródło
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 ...
źródło
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.
LUB
Aby uzyskać wartość SHA-1 z pliku kluczy .
Skopiuj wartość SHA-1 do schowka w następujący sposób:
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.
źródło
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.
źródło
Poniższy kod da ci skrót do Facebooka, ale musisz wykonać te kroki, aby uzyskać skrót do wydania kandydata.
Skopiuj i wklej ten kod w głównej działalności
Wygeneruj podpisany plik APK .
https://developers.facebook.com/apps
. Jest pod ustawieniami.źródło
Po długich badaniach znaleźliśmy rozwiązanie.
Ustawiliśmy uprawnienia jako:
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:
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.
źródło
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.
źródło
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;
Skopiuj odcisk palca certyfikatu SHA-1 z sekcji Prześlij certyfikat w konsoli Google Play
Konwertuj SHA-1 za pomocą: http://tomeko.net/online_tools/hex_to_base64.php i skopiuj dane wyjściowe (base64)
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.
źródło
Wklej następujący kod do metody OnCreate:
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.
źródło
Może to pomóc komuś z tym samym problemem.
Wygeneruj skrót klucza za pomocą poniższego kodu
Jak korzystać z keytool
Wklej to w wymagane pole w twórcy Facebooka
W Android Studio, menu Plik → Struktura projektu
Dodaj parametry podpisywania.
Wybierz smaki
Wybierz utworzoną konfigurację podpisywania.
Wybierz typ kompilacji
Wybierz wariant kompilacji i zbuduj go
źródło
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.
źródło
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.
źródło
źródło
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ć.
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:
źródło
Oto wiele poprawnych odpowiedzi. Tylko jedna rzecz:
Wklej otrzymany skrót w aplikacji → Ustawienia → Główny , a nie w samouczku szybkiego startu.
źródło
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.
źródło
Naprawiłem to, dodając następujące elementy do
MainApplication.onCreate
: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.
źródło
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.
źródło
Użyj poniższego kodu w metodzie onCreate () swojej aktywności:
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.
źródło