OAuth: Wie teste ich mit lokalen URLs?

154

Ich versuche, OAuth- Schaltflächen zu testen , aber alle (Facebook, Twitter, LinkedIn) weisen Fehler auf, die darauf hinweisen, dass ich sie nicht über eine lokale URL testen oder verwenden kann .

Wie gehen die Menschen in der Regel Arbeit in der Entwicklung mit OAuth Sachen , wenn sie alle ein erfordern scheinen nicht-Entwickler und nicht-lokale Verbindungen Umgebungen?

Großartigkeit
quelle
Ich antwortete darauf vor einiger
Jesvin Jose

Antworten:

133

Update Oktober 2016 : Am einfachsten jetzt: Verwenden Sie lvh.me, das immer darauf verweist 127.0.0.1.

Vorherige Antwort :

Da die Rückrufanforderung vom Browser als HTTP-Umleitungsantwort ausgegeben wird, können Sie Ihre .hosts-Datei oder eine gleichwertige Datei so einrichten, dass sie auf eine Domäne verweist, die nicht localhost127.0.0.1 lautet .

Angenommen, Sie registrieren den folgenden Rückruf bei Twitter : http://www.publicdomain.com/callback/. www.publicdomain.comStellen Sie sicher, dass in Ihrer Hosts-Datei auf 127.0.0.1 verwiesen wird und dass Twitter eine erfolgreiche DNS-Suche auf www.publicdomain.com durchführen kann, dh die Domain muss vorhanden sein und der spezifische Rückruf sollte auf Anfrage wahrscheinlich eine 200-Statusmeldung zurückgeben.

EDIT :

Ich habe gerade den folgenden Artikel gelesen: http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local -machine / , auf die aus dieser Frage verwiesen wurde : Twitter oAuth callbackUrl - localhost development .

Um den Artikel zu zitieren:

Sie können bit.ly, einen URL-Verkürzungsdienst, verwenden. Kürzen Sie einfach die [localhost-URL wie http // localhost: 8080 / twitter_callback] und registrieren Sie die verkürzte URL als Rückruf in Ihrer Twitter-App.

Dies sollte einfacher sein, als in der .hosts-Datei herumzuspielen.

Beachten Sie, dass bit.ly jetzt (14. August) die Weiterleitung von Links an localhost nicht zulässt. Google Link Shortener funktioniert jedoch.

PS-Bearbeitung: (18. November): Der Google Link Shortener bietet keine Unterstützung für localhost oder 127.0.0.1 mehr.

Jon Nylander
quelle
3
Ich dachte, der Server ruft die Callbackurl auf und merkt jetzt, dass oauth den Client als Messenger verwendet und keine Verbindungen zwischen Servern hergestellt werden, was es viel einfacher macht.
Kristian Benoit
10
Es ist erwähnenswert, dass lvh.me einem Gentleman namens Levi Cook gehört (siehe gist.github.com/levicook/563675 ) und sich in Privatbesitz befindet. Er scheint ein netter Kerl zu sein, aber es ist keine offiziell autorisierte Domain einer globalen Behörde, so dass es "theoretisch" irgendwann aufhören kann zu arbeiten.
Mario Peshev
4
Zum Zeitpunkt des Schreibens scheint Google keine ausgefallenen Domain-Endungen (wie .me) in Weiterleitungs-URLs zuzulassen . Infolgedessen funktionierte lvh.me nicht. Ich habe stattdessen Erfolg mit lacolhost.com gefunden .
PullJosh
3
Der Besitzer von lvh.me könnte auch anfangen, alle Ihre Autorisierungscodes zu sammeln ...
Taylor Buchanan
2
@ JonNylander Sie könnten ihre DNS-Einträge leicht ändern, um auf eine andere Site zu verweisen, die den Authentifizierungscode und den Status transparent speichert und dennoch zurück zu localhost leitet. Wenn Sie DNS nicht regelmäßig überprüfen, werden Sie es erst bemerken, wenn sie bereits Zugriff hatten. Die einzigen, die sofort bemerken würden, sind Leute, die es außerhalb eines Browserkontexts verwenden.
Taylor Buchanan
18

Oder Sie können https://tolocalhost.com/ verwenden und konfigurieren, wie ein Rückruf an Ihre lokale Site umgeleitet werden soll. Sie können den Hostnamen angeben (falls dieser von localhost abweicht, dh yourapp.local und die Portnummer). Nur zu Entwicklungszwecken.

Jørgen
quelle
13

Sie können auch ngrok verwenden: https://ngrok.com/ . Ich benutze es die ganze Zeit, um einen öffentlichen Server auf meinem lokalen Host laufen zu lassen. Hoffe das hilft.

Weitere Optionen, die sogar kostenlos Ihre eigene benutzerdefinierte Domain bereitstellen, sind serveo.net und https://localtunnel.github.io/www/.

user4848830
quelle
1
Das war einfacher als ich dachte! ./ngrok http 8080 -host-header="localhost:8080"Ich habe gerade mein Konto erstellt, es installiert und ausgeführt und es wurde mit einer öffentlichen URL ausgeführt.
Miguel Reyes
3

Google erlaubt keine Testauthentifizierungs- API auf localhost mit http://webporject.devoder .locund .etc und einem Google-Kurzlink, der auch Ihre lokale URL ( http://webporject.dev) verkürzt hat bit.ly:). Google akzeptiert nur URLs, die beginnen http://localhost/...

Wenn Sie Google Auth API testen möchten, sollten Sie diese Schritte ausführen ...

neuen Alias ​​setzen

Wenn Sie verwenden, openservergehen Sie zum Einstellungsfeld und klicken Sie auf aliases tabund klicken Sie auf Dropdown, dann suchen Sie es localhostund wählen Sie es aus.

Jetzt sollten Sie Ihren lokalen Webprojekt-Stammordner auswählen, indem Sie auf die nächste Dropdown-Liste neben der ersten Dropdown-Liste klicken.

und klicken Sie auf eine Schaltfläche namens addund starten Sie opensever neu.

Jetzt ist Ihr lokales Projekt über diesen Link verfügbar. http://localhost/ Sie können diese lokale URL auch in die Google Auth-API einfügen, um das redirect urlFeld zu ...

Akbar Mirsiddikov
quelle
3

Sie können die Hosts-Datei unter Windows oder Linux Windows bearbeiten: C: \ Windows \ System32 \ Drivers \ etc \ hosts Linux: / etc / hosts

Die Auflösung des lokalen Hostnamens erfolgt innerhalb von DNS.

127.0.0.1 mywebsite.com

Nachdem Sie Ihre Tests beendet haben, kommentieren Sie einfach die Zeile, die Sie hinzufügen, um sie zu deaktivieren

127.0.0.1 mywebsite.com

Ramzieus
quelle
Es hat bei mir funktioniert, danke. Wenn Sie beispielsweise Node.js auf Port 3000 verwenden, verwenden Sie mywebsite.com:3000
flow3r
3

Bearbeiten Sie die /etc/hostsDatei für Mac-Benutzer . Sie müssen verwenden, sudo vi /etc/hostswenn es schreibgeschützt ist. Nach der Autorisierung sendet der oauth-Server die Rückruf-URL. Da diese Rückruf-URL in Ihrem lokalen Browser gerendert wird, funktioniert die lokale DNS-Einstellung:

127.0.0.1       mylocal.com
Gireesh
quelle
0

Nehmen Sie Google OAuth als Referenz

  • In Ihrer OAuth-Client- Registerkarte

    1. Fügen Sie Ihr App-URI-Beispiel(http://localhost:3000) zu autorisierten JavaScript-Ursprungs- URIs hinzu
  • In Ihrem OAuth-Zustimmungsbildschirm

    1. In mywebsite.comzu autorisierten Domains
  • Bearbeiten Sie die Hosts-Datei unter Windows oder Linux, Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostsum sie hinzuzufügen 127.0.0.1 mywebsite.com (Hinweis: Kommentieren Sie alle aus, wenn andere 127.0.0.1 vorhanden sind.)

akash
quelle