OAuth: jak testować przy użyciu lokalnych adresów URL?

155

Próbuję przetestować przyciski OAuth , ale wszystkie (Facebook, Twitter, LinkedIn) wracają z błędami, które wydają się sygnalizować, że nie mogę ich przetestować lub użyć z lokalnego adresu URL.

W jaki sposób ludzie zazwyczaj pracują nad programowaniem z wykorzystaniem OAuth, jeśli wszyscy wydają się wymagać środowisk innych niż deweloperskie i połączeń lokalnych ?

Wspaniałość
źródło
Odpowiedziałem na to kiedyś z powrotem: stackoverflow.com/a/10410838/604511
Jesvin Jose

Odpowiedzi:

133

Aktualizacja październik 2016 : Najłatwiej teraz: użyj lvh.me, który zawsze wskazuje 127.0.0.1.

Poprzednia odpowiedź :

Ponieważ żądanie wywołania zwrotnego jest wysyłane przez przeglądarkę, jako odpowiedź przekierowania HTTP, możesz skonfigurować plik .hosts lub równoważny, aby wskazać domenę, która nie jest localhost niż 127.0.0.1.

Powiedzieć na przykład zarejestrować następujące zwrotnego z Twitter: http://www.publicdomain.com/callback/. Upewnij się, że www.publicdomain.comw Twoim pliku hosts wskazuje 127.0.0.1 ORAZ Twitter może przeprowadzić udane wyszukiwanie DNS na www.publicdomain.com, tj. Domena musi istnieć i określone wywołanie zwrotne powinno prawdopodobnie zwrócić komunikat o stanie 200, jeśli zostanie o to poproszony.

EDYCJA :

Właśnie przeczytałem następujący artykuł: http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local -machine / , do którego był link z tego pytania: Twitter oAuth callbackUrl - rozwój localhost .

Cytując artykuł:

Możesz użyć bit.ly, usługi skracania adresów URL. Po prostu skróć [adres URL hosta lokalnego, na przykład http // localhost: 8080 / twitter_callback] i zarejestruj skrócony adres URL jako wywołanie zwrotne w swojej aplikacji na Twitterze.

Powinno to być łatwiejsze niż majstrowanie w pliku .hosts.

Zauważ, że teraz (sierpień 2014) bit.ly nie pozwala na przekierowanie linków do localhost; jednak skracacz linków Google działa.

Edycja PS: (listopad '18): narzędzie do skracania linków Google przestało obsługiwać localhost lub 127.0.0.1.

Jon Nylander
źródło
3
Myślałem, że serwer wywołuje callbackurl, a teraz zdałem sobie sprawę, że oauth używa klienta jako komunikatora i nie są tworzone żadne połączenia między serwerami, co czyni to znacznie prostszym.
Kristian Benoit
10
Warto zauważyć, że lvh.me jest własnością dżentelmena o imieniu Levi Cook (patrz gist.github.com/levicook/563675 ) i jest własnością prywatną. Wygląda na miłego faceta, ale nie jest to oficjalna, autoryzowana domena przez globalny autorytet, więc może „teoretycznie” przestać działać w pewnym momencie.
Mario Peshev
4
W chwili pisania tego tekstu Google nie zezwala na wymyślne rozszerzenia domeny (takie jak .me) w przekierowaniach. W rezultacie lvh.me nie działało. Zamiast tego odnalazłem sukces z lacolhost.com .
PullJosh
3
Właściciel lvh.me może również zacząć zbierać wszystkie twoje kody autoryzacyjne ...
Taylor Buchanan,
2
@JonNylander Mogą z łatwością zmienić swoje rekordy DNS, aby wskazywały inną witrynę, która w przejrzysty sposób przechowuje kod uwierzytelniania i stan i nadal przekierowuje z powrotem do lokalnego hosta. Jeśli nie sprawdzasz regularnie DNS, nie zauważysz, dopóki nie będą już mieli dostępu. Jedyne, które natychmiast zauważyłyby, to ludzie używający go poza kontekstem przeglądarki.
Taylor Buchanan
18

Lub możesz użyć https://tolocalhost.com/ i skonfigurować, w jaki sposób ma przekierować wywołanie zwrotne do Twojej lokalnej witryny. Możesz podać nazwę hosta (jeśli różni się od hosta lokalnego, tj. Twojaaplikacja.lokalna i numer portu). Tylko do celów programistycznych.

Jørgen
źródło
13

Możesz także użyć ngrok: https://ngrok.com/ . Używam go cały czas, aby mieć publiczny serwer działający na moim hoście lokalnym. Mam nadzieję że to pomoże.

Inne opcje, które zapewniają nawet bezpłatną własną domenę niestandardową, to serveo.net i https://localtunnel.github.io/www/

user4848830
źródło
1
To było łatwiejsze niż myślałem! Właśnie utworzyłem konto, zainstalowałem je i uruchomiłem, ./ngrok http 8080 -host-header="localhost:8080"a ja korzystałem z publicznego adresu URL.
Miguel Reyes
3

Google nie zezwala na testowanie interfejsu API uwierzytelniania testowego na hoście lokalnym przy użyciu http://webporject.devlub .loci .etc oraz krótkiego linku Google, który skrócił również lokalny adres URL ( http://webporject.dev) bit.ly:). Google akceptuje tylko adresy URL rozpoczynające sięhttp://localhost/ ...

jeśli chcesz przetestować Google Auth API, wykonaj następujące kroki ...

ustaw nowy alias

jeśli używasz, openserverprzejdź do panelu ustawień i kliknij aliases tabi kliknij menu rozwijane, a następnie znajdź localhosti wybierz.

teraz należy wybrać folder główny lokalnego projektu internetowego, klikając następne menu rozwijane obok pierwszego menu.

i kliknij przycisk o nazwie addi zrestartuj opensever.

teraz twój projekt lokalny jest dostępny pod tym linkiem, http://localhost/ możesz również wkleić ten lokalny adres URL do google auth api do redirect urlpola ...

Akbar Mirsiddikov
źródło
3

Możesz edytować plik hosts w systemie Windows lub Linux Windows: C: \ Windows \ System32 \ Drivers \ etc \ hosts Linux: / etc / hosts

Rozpoznawanie nazw hosta lokalnego jest obsługiwane w samym DNS.

127.0.0.1 mywebsite.com

po zakończeniu testów wystarczy skomentować dodaną linię, aby ją wyłączyć

127.0.0.1 mywebsite.com

ramzieus
źródło
U mnie zadziałało, dzięki. Ponadto, jeśli używasz np. Node.js na porcie 3000, użyj mywebsite.com:3000
flow3r
3

W przypadku użytkowników komputerów Mac edytuj /etc/hostsplik. Musisz użyć, sudo vi /etc/hostsjeśli jest tylko do odczytu. Po autoryzacji serwer OAuth wysyła adres URL wywołania zwrotnego, a ponieważ ten adres URL wywołania zwrotnego jest renderowany w Twojej przeglądarce lokalnej, lokalne ustawienie DNS będzie działać:

127.0.0.1       mylocal.com
Gireesh
źródło
0

Biorąc Google OAuth jako odniesienie

  • Na karcie klienta OAuth

    1. Dodaj przykład identyfikatora URI aplikacji(http://localhost:3000) do autoryzowanych identyfikatorów URI źródeł JavaScript
  • Na ekranie akceptacji OAuth

    1. Dodaj mywebsite.comdo autoryzowanych domen
  • Edytuj plik hosts w systemie Windows lub Linux, Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostsaby dodać 127.0.0.1 mywebsite.com (Uwaga: skomentuj dowolny, jeśli jest inny 127.0.0.1)

akash
źródło