OAuth: comment tester avec des URL locales?

155

J'essaie de tester les boutons OAuth , mais ils reviennent tous (Facebook, Twitter, LinkedIn) avec des erreurs qui semblent indiquer que je ne peux pas les tester ou les utiliser à partir d'une URL locale .

Comment les gens travaillent-ils généralement dans le développement avec des éléments OAuth s'ils semblent tous nécessiter des environnements de connexions non-dev et non locaux ?

Génialité
la source
J'ai répondu à ce sujet il y a quelque temps: stackoverflow.com/a/10410838/604511
Jesvin Jose

Réponses:

133

Mise à jour d'octobre 2016 : le plus simple maintenant: utilisez lvh.me qui pointe toujours vers 127.0.0.1.

Réponse précédente :

Étant donné que la demande de rappel est émise par le navigateur, en tant que réponse de redirection HTTP, vous pouvez configurer votre fichier .hosts ou équivalent pour pointer un domaine qui n'est pas localhostà 127.0.0.1.

Disons , par exemple , vous enregistrez le rappel suivant avec Twitter: http://www.publicdomain.com/callback/. Assurez-vous que cela www.publicdomain.compointe vers 127.0.0.1 dans votre fichier hosts, ET que Twitter peut faire une recherche DNS réussie sur www.publicdomain.com, c'est-à-dire que le domaine doit exister et que le rappel spécifique devrait probablement renvoyer un message d'état 200 si demandé.

MODIFIER :

Je viens de lire l'article suivant: http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local -machine / , qui était lié à depuis cette question: Twitter oAuth callbackUrl - localhost development .

Pour citer l'article:

Vous pouvez utiliser bit.ly, un service de raccourcissement d'URL. Raccourcissez simplement l '[URL localhost telle que http // localhost: 8080 / twitter_callback] et enregistrez l'URL raccourcie comme rappel dans votre application Twitter.

Cela devrait être plus facile que de manipuler le fichier .hosts.

Notez que maintenant (août 14) bit.ly n'autorise pas le transfert de lien vers localhost; Cependant, le raccourcisseur de lien Google fonctionne.

Modification PS: (novembre 18): le raccourcisseur de lien Google a cessé de prendre en charge localhost ou 127.0.0.1.

Jon Nylander
la source
3
Je pensais que le serveur appelait le callbackurl, et je réalise maintenant que oauth utilise le client comme messager et qu'aucune connexion n'est établie entre les serveurs, ce qui le rend beaucoup plus simple.
Kristian Benoit le
10
Il convient de noter que lvh.me appartient à un homme appelé Levi Cook (voir gist.github.com/levicook/563675 ) et qu'il est une propriété privée. Il semble être un gars sympa mais ce n'est pas un domaine officiel autorisé par une autorité mondiale, donc il peut "théoriquement" cesser de fonctionner à un moment donné.
Mario Peshev
4
Au moment de la rédaction de cet article, Google ne semble pas autoriser les extensions de domaine sophistiquées (comme .me) dans les URL de redirection. En conséquence, lvh.me ne fonctionnait pas. J'ai trouvé le succès avec lacolhost.com à la place.
PullJosh
3
Le propriétaire de lvh.me pourrait également commencer à collecter tous vos codes d'autorisation ...
Taylor Buchanan
2
@JonNylander Ils pourraient facilement changer leurs enregistrements DNS pour pointer vers un autre site qui stocke de manière transparente le code d'authentification et l'état et redirige toujours vers localhost. À moins que vous ne vérifiiez régulièrement le DNS, vous ne le remarquerez pas tant qu'ils n'y auront pas déjà accès. Les seuls qui remarqueraient immédiatement sont les personnes qui l'utilisent en dehors d'un contexte de navigateur.
Taylor Buchanan
18

Ou vous pouvez utiliser https://tolocalhost.com/ et configurer comment il doit rediriger un rappel vers votre site local. Vous pouvez spécifier le nom d'hôte (s'il est différent de localhost, c'est-à-dire yourapp.local et le numéro de port). À des fins de développement uniquement.

Jørgen
la source
13

Vous pouvez également utiliser ngrok: https://ngrok.com/ . Je l'utilise tout le temps pour avoir un serveur public fonctionnant sur mon hôte local. J'espère que cela t'aides.

Servo.net et https://localtunnel.github.io/www/ sont d'autres options qui fournissent même gratuitement votre propre domaine personnalisé.

user4848830
la source
1
C'était plus facile que je pensais! Je viens de créer mon compte, de l'installer et de l' ./ngrok http 8080 -host-header="localhost:8080"exécuter et je courais avec une URL publique.
Miguel Reyes
3

Google n'autorise pas l'API de test d'authentification sur l'hôte local en utilisant http://webporject.devou .locet .etc et le lien court google qui a raccourci votre URL locale ( http://webporject.dev) également bit.ly:). Google n'accepte que les URL qui commencent http://localhost/...

si vous souhaitez tester google auth api, vous devez suivre ces étapes ...

définir un nouvel alias

si vous utilisez, openserveraccédez au panneau des paramètres et cliquez sur aliases tabet cliquez sur le menu déroulant, puis recherchez localhostet choisissez-le.

maintenant, vous devez choisir le dossier racine de votre projet Web local en cliquant sur la liste déroulante suivante qui se trouve à côté de la première liste déroulante.

et cliquez sur un bouton appelé addet redémarrez opensever.

maintenant votre projet local disponible sur ce lien, http://localhost/ vous pouvez également coller cette URL locale à google auth api dans le redirect urlchamp ...

Akbar Mirsiddikov
la source
3

Vous pouvez modifier le fichier hosts sous Windows ou Linux Windows: C: \ Windows \ System32 \ Drivers \ etc \ hosts Linux: / etc / hosts

La résolution de nom localhost est gérée dans le DNS lui-même.

127.0.0.1 mywebsite.com

après avoir terminé vos tests, il vous suffit de commenter la ligne que vous ajoutez pour la désactiver

127.0.0.1 mywebsite.com

ramzieus
la source
Cela a fonctionné pour moi, merci. De plus, si vous utilisez par exemple Node.js sur le port 3000, utilisez mywebsite.com:3000
flow3r
3

Pour les utilisateurs de Mac, modifiez le /etc/hostsfichier. Vous devez utiliser sudo vi /etc/hostssi c'est en lecture seule. Après autorisation, le serveur oauth envoie l'URL de rappel, et puisque cette URL de rappel est rendue sur votre navigateur local, le paramètre DNS local fonctionnera:

127.0.0.1       mylocal.com
Gireesh
la source
0

Prendre Google OAuth comme référence

  • Dans votre onglet client OAuth

    1. Ajoutez votre exemple URI App(http://localhost:3000) à JavaScript autorisés origines URIs
  • Dans votre écran de consentement OAuth

    1. Ajouter mywebsite.comaux domaines autorisés
  • Modifiez le fichier hosts sous Windows ou Linux Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostspour l'ajouter 127.0.0.1 mywebsite.com (NB: commentez-en s'il y en a d'autres 127.0.0.1)

Akash
la source