2012-12-12 8 views
5

Mam serwer programistyczny (kontener serwletu Java) uruchomiony na moim komputerze w mojej prywatnej sieci (zakres IP 192.168.0.0 do 192.168.255.255). Ten serwer programistyczny wykonuje moje środowisko testowania integracji. To środowisko testowe ma swój własny identyfikator aplikacji Facebook. Posiadanie serwera działającego w zakresie 192.168.x.y pozwala moim współpracownikom przetestować stronę internetową, zalogować się do mojej lokalnej witryny za pomocą swoich kont Facebooka itp.Aplikacje na Facebooku: Zezwalanie na uruchamianie pojedynczej aplikacji Facebook na dowolnym prywatnym adresie sieciowym

Na https://developers.facebook.com -> w ustawieniach aplikacji na Facebooku -> znajduje się pod "Ustawienia podstawowe" - > w polu "Witryna z logowaniem na Facebooku" ustawiłem http://192.168.2.106:8080, ponieważ jest to kombinacja adres-port, z którym łączy się mój serwer programistyczny.

Z powodu DHCP mój komputer ma teraz nieco inny adres IP, a mianowicie 192.168.2.109. Ilekroć uruchomić mój serwer, a następnie spróbuj zrobić coś Facebook-API związane (np Facebook Zaloguj się), pojawia się następujący komunikat o błędzie z Facebook

{ 
    "error": { 
     "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration.", 
     "type": "OAuthException", 
     "code": 191 
    } 
} 

Czy istnieje sposób, aby mieć Facebook App zezwala na „zakres adresów IP z Facebooka Zaloguj się "? Jakie inne rozwiązania możesz zaproponować?

Moi koledzy będą mogli również uruchamiać serwer programistyczny na własnych komputerach z ich własnymi prywatnymi adresami sieciowymi. Dlatego ten sam identyfikator aplikacji Facebook będzie działał na różnych komputerach z różnymi adresami IP i nadal będzie dostępny dla wszystkich w sieci prywatnej.

Należy zauważyć, że ustawienie "Witryna z Facebookiem" na localhost powoduje, że serwer programistyczny jest dostępny tylko na tej samej maszynie, na której działa. To niestety uniemożliwia kolegom dostęp do tej instancji serwera rozwoju.

Aktualizacja

Zapisano bug: https://developers.facebook.com/bugs/606277079382609

+0

Dlaczego nie wystarczy ustawić statyczną dzierżawę na serwerze DCHP? – Igy

+0

Dodaj dodatkowe ograniczenia do pytania. – user314104

Odpowiedz

1

Jeśli w systemie Windows można spróbować zmienić plik hosts w katalogu C: \ Windows \ System32 \ drivers \ etc i dodać swoje IP wyimaginowanej domena (twoi współpracownicy też powinni to zrobić) i umieść tę domenę w panelu Ustawienia Facebooka. Nie jestem tego pewien, więc powiedz mi, czy to działa :)

+0

dziękuję za rozwiązanie. Przemyślałem to. Zmiana pliku hostów na każdym komputerze współpracownika w mojej sieci prywatnej jest niepraktyczna/możliwa (np. Istnieją klienci systemu Android). Dodatkowo, o ile mi wiadomo, składnia plików hostów systemu Windows nie obsługuje symboli wieloznacznych adresów IP. Kiedy więc zmieni się IP serwera (na przykład z powodu DHCP lub serwera uruchomionego na innym komputerze), będę musiał zaktualizować plik hosts na każdym komputerze. – Abdull

1

Z tego co wiem, nie można ustawić zakresu adresów IP w ustawieniach aplikacji, redirect_uri jest zwykle przeznaczony do obsługi adresów URL z nazwami domen, co jest zazwyczaj w przypadku publicznych stron internetowych.

Najlepszym sposobem na uniknięcie tego problemu jest upewnienie się, że lokalny serwer programistyczny zawsze otrzymuje ten sam adres IP, co jest ogólnie dobrą praktyką w przypadku pisania serwera. istnieje kilka sposobów, aby to zrobić w zależności od konfiguracji sieci, tu są dwie możliwości:

  1. Konfiguracja serwera DHCP zawsze przydzielić tego samego adresu IP do serwera dev adres MAC
  2. nagiąć reguły trochę i skonfiguruj swój komputer, aby odebrał nieużywany adres IP. Serwery DHCP zwykle przydzielają adresy IP w kolejności (rozpoczynają się od 192.168.1.1 i pracują do 192.168.254.254), więc twój komputer będzie żądał adresu IP w wyższej części zakresu (najpierw sprawdź Ping IP, aby upewnić się, że nie jest używany)
+1

Oto wyzwania/ograniczenia, przed którymi stoję: DOWOLNY programista musi być w stanie uruchomić aplikację internetową na swoim WŁASNYM laptopie w DOWOLNYM środowisku sieciowym: w miejscu pracy, w domu, w zagranicznej sieci partnera biznesowego. Szczególnie w przypadku użycia sieci zagranicznej nie można polegać na niezmiennym IP. I przypadek użycia "każdy programista-można-uruchomić-w-aplikacji-sieci" uniemożliwia posiadanie tylko jednego IP/centralnego serwera dev. – Abdull

1

Zamiast używać adresu IP, użyj localhost.

Więc hxxp: //192.168.1.20 staną hxxp: // localhost

(zamiast xx TT)

Ten postanawia wrócić do lokalnego komputera, bez względu na jego adres IP. Zakładam, że twój serwer programistyczny działa na twoim komputerze, używając WAMP lub czegoś podobnego. Przyjmuję to założenie, ponieważ twierdzisz, że musi działać na dowolnym laptopie w dowolnym środowisku sieciowym.

+0

Uruchamianie serwera programistycznego na hoście lokalnym uniemożliwia (?) Dostęp do serwera temu koledze. Koledzy będą mieli dostęp do serwera, aby zalogować się za pomocą konta na Facebooku i przetestować/zagrać na stronie internetowej. – Abdull

+0

Więc istnieje tylko jeden serwer dev, ale chcesz, aby ludzie mogli uzyskać do niego dostęp z dowolnego miejsca? W takim przypadku nie będzie można używać adresowania lokalnego, ponieważ jeśli współpracownik jest w innej sieci, będzie miał własną sieć lokalną. Cały punkt dotyczący adresowania lokalnego (192.168, 10.0 itd.) Polega na tym, że wszystkie sieci mogą mieć własne WŁASNE. Czy chcesz powiedzieć, że chcesz, aby twórcy z dowolnej sieci mieli dostęp do twojego serwera deweloperskiego? W takim przypadku należy użyć zewnętrznego adresu IP sieci i przypisać określony port, a następnie przekazać ten port do serwera dev. – Puzbie

1

Jeśli jesteś właścicielem domeny, możesz utworzyć test poddomeny test.mydomain.com wskazujący na 192.168.2.109.

Kiedy adres powinien się ponownie zmienić, możesz zmienić odpowiednio wpis.

Nie ma powodu, dla którego wpis DNS nie byłby w stanie wskazać adresu IP z zakresu 192.168. Dla kogoś spoza twojej sieci nie będzie to zbyt przydatne, ponieważ nie może uzyskać dostępu do twojego adresu IP z zewnątrz, ale dla twoich współpracowników w sieci to zadziała.

Jeśli współpracownik chce uruchomić aplikację internetową na swoim komputerze, może oczywiście zastąpić to ustawienie przy użyciu własnego pliku hostów.

3

Jeśli mógłbyś uniknąć korzystania z localhost, to jest bardzo prosty sposób: Spraw, aby aplikacja facebook przekierowała do http://lvh.me:3000/ (lub portu, którego twój serwer słucha na localhost). Dobrowolny programista jest właścicielem domeny lvh.me i miał konfigurację DNS wskazującą na localhost. Próbowałem tego i właśnie tego używałem do testowania rozwoju. Podobnie, możesz zrobić takie rzeczy i wskazuje rekord DNS domeny, której jesteś właścicielem, do zakresu lokalnego IP. Nie znam DNSu, więc nie jestem pewien, jak go skonfigurować lub czy jest to możliwe.

Powiązane problemy