Jak przetestować Facebook Connect Lokalnie

193

Używam interfejsów API ASP .NET i Facebook Connect. ale po uruchomieniu aplikacji i naciśnięciu przycisku Połącz wraca do strony internetowej, a nie do testowego serwera lokalnego, którym jest ( http: // localhost: xxxx / test.aspx ) Więc jak mogę przetestować Facebooka lokalnie (tj. jak mogę zmienić adres zwrotny)?

Haytham
źródło
4
Odpowiedź znajduje się tutaj: forum.developers.facebook.com/viewtopic.php?pid=116136 musisz edytować plik „C: \ WINDOWS \ system32 \ drivers \ etc \ hosts”, aby Twoja domena przyszła do localHost
Haytham
101
Ten system wydaje się być raczej słabo wdrożony ze strony Facebooka. Wydaje się, że nie przyszło im do głowy, że ktoś chciałby przetestować tę funkcję inaczej niż na serwerze na żywo. Dwa podane tutaj rozwiązania - edytowanie lokalnego pliku hosts, aby sfałszować serwer produkcyjny i przekierowanie go do localhost, oraz tymczasowa zmiana produkcyjnego adresu URL na Facebooku na localhost, oba są wyjątkowo złym projektem ze strony Facebooka. Facebook musi dodać do swojego systemu jakąś zdolność testowania.
Paul Legato
2
Rozwiązaniem jest posiadanie 3 aplikacji -> na żywo, QA i Dev. Więc jeśli twoją główną aplikacją jest apps.facebook.com/ohnice/ QA, a deweloper może być apps.facebook.com/ohnice_qa_sd/ to apps.facebook.com/ohnice_dev_fg/ tak, coś losowego, więc nie będziesz mieć niechcianych gości, kiedy twój dom nie jest uporządkowane.
tgkprog
1
@PaulLegato jest to zrobione teraz (po latach ...). Zobacz moje rozwiązanie lub jedno z rozwiązań korzystających z funkcji testowej.
Erdal G.

Odpowiedzi:

236

To jest dość proste, kiedy się dowiesz.

Otwarty /etc/hosts(unix) lubC:\WINDOWS\system32\drivers\etc\hosts .

Jeśli twoja domena to foo.com, dodaj ten wiersz:

127.0.0.1    local.foo.com

Podczas testowania otwórz local.foo.comw przeglądarce i powinno działać.

freeall
źródło
4
Aby edytować plik hosts na MAC, a następnie uruchom „sudo pico / private / etc / hosts” na swoim terminalu, edytuj i naciśnij „ctrl X”, aby zapisać
Christoffer
@Christoffer: Uważam, że / private / etc to tylko symboliczny link do / etc, więc / etc / hosts i / private / etc / hosts to ten sam plik.
freeall
1
Masz rację ... ale niektórzy z nas muszą nakarmić łyżeczką i powiedzieć „open / etc / hosts” po prostu nie wystarczy;) FB wciąż nie działa lokalnie z tym rozwiązaniem dla mnie. Nie korzystam z Facebooka JS
Christoffer
5
to działało dla mnie do niedawna, ale teraz otrzymuję connection refusedwyjątek podczas próby logowania, prawdopodobnie z powodu zmiany na Facebooku. wszelkie pomysły obejścia tego są bardzo mile widziane.
onurmatik
1
Jeśli robisz to, aby uzyskać dostęp do aplikacji Rails działającej lokalnie, być może musisz odwiedzić stronę local.foo.com: 3000` w przeglądarce, ponieważ aplikacje Rails są zwykle uruchamiane na tym porcie.
David Tuite
102

Edytuj swoją aplikację na www.facebook.com/developers/ i ustaw „URL strony” na „http: // localhost / myapppath”.

Po zakończeniu zmień go z powrotem.

Alex
źródło
19
Facebook nie „ponownie łączy się” z twoim serwerem. Ich JS ma. A JS działa w kontekście przeglądarki. Który wie, gdzie wskazuje „localhost”.
Alex
Nie pozwoliłbym dodać „strony lokalnej ”, musiałem się upewnić, że mam tam kropkę. To zadziałało: „ local.site
Pete
Niektóre funkcje FB nie działają z tym. Na przykład - zapisz osiągnięcia na serwerach FB. Chce HTTPS, więc moja sztuczka localhost nie działa :(
Kostadin
2
warto zauważyć, że sprawdzenie poprawności w formularzu aplikacji wymaga użycia localhost w adresie URL, np. http://localhost/myappzamiasthttp://myapp
graham
1
jeśli używasz innego portu, użyj tego wzorca: localhost: xxxx ), na przykład: localhost: 8080
m0z4rt
77

Sugeruję utworzenie aplikacji testowej (tylko dla środowiska programistycznego) na https://developers.facebook.com/apps i ustawienie: Website with Facebook Loginproperty na localhost: ustawienia [port] .
ta opcja będzie działać poprawnie bez potrzeby zmiany hostów.
pamiętaj o zmianie aplikacji z powrotem na aplikację produkcyjną po uruchomieniu.

Edycja - w najnowszej wersji fb znajdziesz ją pod settingszakładką. wprowadź opis zdjęcia tutaj

Sagiv Ofek
źródło
2
Lub po prostu użyj osobnych plików konfiguracyjnych dla, deweloperów, inscenizacji i na żywo.
Chris Barry
1
Nie mogę już znaleźć „Witryny z logowaniem przez Facebook”.
yehe
5
Wygląda na to, że musisz kliknąć duży szary poziomy przycisk „+ Dodaj platformę”. Tam masz „Witrynę”
Luciano
75

Facebook dodał funkcję wersji testowych.

Najpierw dodaj wersję testową aplikacji: Utwórz aplikację testową

Utwórz aplikację testową

Następnie zmień adres URL witryny na „ http: // localhost ” w obszarze Witryna i naciśnij przycisk Zapisz zmiany

wprowadź opis zdjęcia tutaj

To wszystko, ale bądź ostrożny: identyfikator aplikacji i tajne klucze aplikacji są różne dla aplikacji i jej wersji testowych!

Erdal G.
źródło
co to jest domena aplikacji w panelu ustawień. rozwijam aplikację jonową z logowaniem na Facebooku
Chirag Thaker
1
@Chiragthaker Jest to domena, w której będzie hostowana aplikacja produkcyjna
Erdal G.
3
W moim przypadku jest to o wiele lepsza odpowiedź niż edycja hostspliku, ponieważ nie wymaga on używania HTTPS na moim serwerze testowym.
Petr Dlouhý
39

Nie musisz robić nic trudnego!

Facebook → Ustawienia → Podstawowe: w polu Domeny aplikacji
wpisz localhost ”, a następnie kliknij + Dodaj platformę ” i wybierz Witryna internetowa .

Po tym, w URL witryny polu wpisz swój adres localhost
(np http://localhost:1337/something).

Umożliwi to przetestowanie wtyczek Facebooka lokalnie.

Bałwan
źródło
1
czy istnieje obejście dla plików w pliku ścieżki: /// android_assets / www? Facebook nie zezwoli na tę ścieżkę dla
adresu
musi być teraz https
Simon_Weaver
@Simon_Weaver skąd masz te informacje? czy jest to gdzieś udokumentowane?
kolistivra
@ Simon_Weaver z tego linku, który wysłałeś: „Nadal będziesz mógł używać HTTP z adresami„ localhost ”, ale tylko wtedy, gdy Twoja aplikacja jest w trybie programowania.”
kolistivra
5

Facebook najwyraźniej losowo wyłącza możliwość ustawienia localhost jako domeny w Twojej aplikacji na Facebooku. Odkryłem, że najłatwiejszym rozwiązaniem było tunelowanie mojego lokalnego hosta do sieci. Można to zrobić za darmo, używając http://progrium.com/localtunnel/ lub niestandardowego adresu URL (łatwiej, ponieważ nie musisz zmieniać adresu za każdym razem na Facebooku) https://showoff.io

rio517
źródło
3
innym wyborem tunelu jest ngrok.com
Mohamed Selim,
3

Nie mogłem użyć innych rozwiązań ... To, co zadziałało, to instalacja LocalTunnel.net (https://github.com/danielrmz/localtunnel-net-client), a następnie użycie powstałego adresu URL na Facebooku.

Alan Cardoso
źródło
1

Wygląda na to, że FB właśnie zmienił stronę tworzenia aplikacji i dodał funkcję o nazwie „Biała lista adresów IP serwera”.

  1. Przejdź do aplikacji i wybierz Ustawienia -> Karta Zaawansowane
  2. Uzyskaj swój publiczny adres IP (Google powie ci, jeśli google „Whats My IP”)
  3. Dodaj swój publiczny adres IP do białej listy adresów IP serwera i kliknij Zapisz zmiany u dołu
Seven Seven
źródło
co się stanie, jeśli w witrynie pracuje wielu programistów z różnych lokalizacji? Używamy VM (Vagrant), więc adres IP jest taki sam dla każdego dewelopera. Niestety Facebook nie pozwala na używanie lokalnych adresów IP na białej liście. To nie działa
ProblemsOfSumit
Jeśli dobrze czytam twój komentarz, nie powinno to stanowić problemu. Musisz podać swój publiczny adres IP, który według ciebie jest taki sam dla każdego programisty (czy miałeś na myśli, że NIE jest taki sam). Jeśli masz wielu programistów w różnych witrynach o różnych adresach IP, możesz użyć sieci VPN do kierowania całego ruchu przez 1 adres IP.
sevensevens
nie, publiczny adres IP dla różnych komputerów w różnych lokalizacjach oczywiście nie jest taki sam, tylko lokalny adres IP na każdym komputerze jest taki sam. (np. localhost). Nie chcę niczego kierować. Na razie używam localhost (tylko przykład) w aplikacji FB - która działa dobrze. Ale potrzebuję rozwiązania, gdy strona zostanie uruchomiona. Facebook pozwala tworzyć „aplikacje testowe” wewnątrz aplikacji, co może być rozwiązaniem, ale jeszcze tego nie próbowałem. EDYCJA: wydaje się, że to jest rozwiązanie
ProblemsOfSumit
1

przejdź do strony obszaru roboczego ... wyświetl w przeglądarce .. skopiuj tekst paska adresu. teraz przejdź do aplikacji na Facebooku i edytuj ustawienia

w witrynie, w adresie URL wklej ten adres

w integracji z Facebookiem ponownie wklej ten adres w kanwie URL

a także ten sam kod wszędzie tam, gdzie potrzebujesz adresu URL obszaru roboczego lub adresu przekierowującego ..

mam nadzieję, że to pomoże ..

Sangeeta Saharan
źródło
-6

Utwórz 2 aplikacje i

W /initializers/env_variables.rb

if Rails.env == 'development'
    ENV['FB_APP_ID'] = "HERE"
    ENV["FB_SECRET"] = "HERE"
else
    ENV['FB_APP_ID'] = "HERE"
    ENV["FB_SECRET"] = "HERE"
end
blask
źródło