OAuth: как проверить локальные URL?


155

Я пытаюсь проверить кнопки OAuth , но все они (Facebook, Twitter, LinkedIn) возвращаются с ошибками, которые, кажется, указывают на то, что я не могу проверить или использовать их с локального URL.

Как люди обычно работают в разработке с OAuth, если все они требуют среды не-dev и нелокальных соединений?


Я ответил на это некоторое время назад: stackoverflow.com/a/10410838/604511
Джесвин Хосе

Ответы:


133

Обновление за октябрь 2016 года : проще всего: используйте lvh.me, который всегда указывает на 127.0.0.1.

Предыдущий ответ :

Поскольку запрос обратного вызова выдается браузером, в качестве ответа перенаправления HTTP вы можете настроить файл .hosts или эквивалентный ему, чтобы указать домен, который не localhostсоответствует 127.0.0.1.

Скажем, например , зарегистрировать следующую функцию обратного вызова с Twitter: http://www.publicdomain.com/callback/. Убедитесь, что www.publicdomain.comв вашем файле hosts указано 127.0.0.1, и что твиттер может выполнить успешный поиск DNS на сайте www.publicdomain.com, то есть домен должен существовать, и конкретный обратный вызов, вероятно, должен вернуть сообщение о состоянии 200, если потребуется.

РЕДАКТИРОВАТЬ :

Я только что прочитал следующую статью: http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local -machine / , с которой был связан этот вопрос: Twitter oAuth callbackUrl - разработка localhost .

Цитировать статью:

Вы можете использовать bit.ly, сервис сокращения URL. Просто сократите [localhost URL, например http // localhost: 8080 / twitter_callback] и зарегистрируйте сокращенный URL-адрес в качестве обратного вызова в своем приложении Twitter.

Это должно быть проще, чем возиться в файле .hosts.

Обратите внимание, что теперь (август 14) bit.ly не разрешает пересылку ссылок на localhost; Однако Google укороченная ссылка работает.

PS edit: (Nov '18): укороченная ссылка Google перестала поддерживать localhost или 127.0.0.1.


3
Я думал, что сервер вызывал callbackurl, и теперь понимаю, что oauth использует клиента в качестве мессенджера, и между серверами не устанавливаются соединения, что делает его намного проще.
Кристиан Бенуа

10
Стоит отметить, что lvh.me принадлежит джентльмену по имени Леви Кук (см. Gist.github.com/levicook/563675 ) и находится в частной собственности. Он выглядит как хороший парень, но это не официальный авторизованный домен глобальной власти, поэтому он может «теоретически» перестать работать в какой-то момент времени.
Марио Пешев

4
На момент написания статьи Google, по-видимому, не разрешал добавлять модные доменные расширения (например .me) в URL-адреса перенаправления. В результате lvh.me не работал. Я нашел успех с lacolhost.com вместо этого.
PullJosh

3
Владелец lvh.me также может начать собирать все ваши коды авторизации ...
Тейлор Бьюкенен

2
@JonNylander. Они могут легко изменить свои записи DNS, чтобы они указывали на другой сайт, который прозрачно хранит код и состояние аутентификации и по-прежнему перенаправляет обратно на локальный хост. Если вы не проверяете DNS регулярно, вы не заметите, пока у них уже не будет доступа. Единственные, кто сразу это заметит, это люди, использующие его вне контекста браузера.
Тейлор Бьюкенен

18

Или вы можете использовать https://tolocalhost.com/ и настроить способ перенаправления обратного вызова на ваш локальный сайт. Вы можете указать имя хоста (если оно отличается от localhost, т.е. yourapp.local и номер порта). Только для целей разработки.


13

Вы также можете использовать ngrok: https://ngrok.com/ . Я использую его все время, чтобы на моем локальном хосте работал публичный сервер. Надеюсь это поможет.

Другие варианты, которые даже предоставляют ваш собственный домен бесплатно, - serveo.net и https://localtunnel.github.io/www/


1
Это было проще, чем я думал! Просто создал мой аккаунт, установил его и запустил, ./ngrok http 8080 -host-header="localhost:8080"и я работал с публичным URL.
Мигель Рейес

3

Google не разрешает тестировать auth api на localhost, используя http://webporject.devили .locи .etc, и короткую ссылку Google, которая также сокращает ваш локальный URL ( http://webporject.dev) bit.ly:). Google принимает только URL, который начинается http://localhost/...

Если вы хотите проверить Google Auth API, вы должны выполнить следующие действия ...

установить новый псевдоним

если вы используете, openserverперейдите на панель настроек и нажмите aliases tabи нажмите на выпадающий список, затем найдите localhostи выберите его.

Теперь вы должны выбрать корневую папку локального веб-проекта, щелкнув следующий раскрывающийся список, следующий за первым раскрывающимся списком.

и нажмите на кнопку вызова addи перезапустите opensever.

Теперь ваш локальный проект доступен по этой ссылке, http://localhost/ и вы можете вставить этот локальный URL в Google Auth API в redirect urlполе ...


3

Вы можете редактировать файл hosts в windows или linux Windows: C: \ Windows \ System32 \ Drivers \ etc \ hosts Linux: / etc / hosts

Разрешение имени локального хоста обрабатывается в самом DNS.

127.0.0.1 mywebsite.com

после завершения тестов вы просто комментируете добавленную строку, чтобы отключить ее

127.0.0.1 mywebsite.com


Это сработало для меня, спасибо. Кроме того, если вы используете, например, Node.js на порту 3000, используйте mywebsite.com:3000
flow3r

3

Для пользователей Mac отредактируйте /etc/hostsфайл. Вы должны использовать, sudo vi /etc/hostsесли его только для чтения. После авторизации oauth-сервер отправляет URL-адрес обратного вызова, и, поскольку этот URL-адрес обратного вызова отображается в локальном браузере, будет работать локальный параметр DNS:

127.0.0.1       mylocal.com

0

Принимая Google OAuth в качестве ссылки

  • В вашей вкладке клиента OAuth

    1. Добавьте ваш пример приложения URI(http://localhost:3000) в Уставном JavaScript истоки URIs
  • На вашем экране согласия OAuth

    1. Добавить mywebsite.comв авторизованные домены
  • Отредактируйте файл hosts в Windows или Linux, Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostsчтобы добавить его 127.0.0.1 mywebsite.com (обратите внимание, любой, если есть какой-либо другой 127.0.0.1)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.