OAuth: як перевірити локальні URL-адреси?


155

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

Як люди зазвичай працюють в розробці з матеріалами OAuth, якщо всі, мабуть, потребують середовищ нерозробних та не локальних зв'язків?


Я відповів на те , що коли: stackoverflow.com/a/10410838/604511
Jesvin Хосе

Відповіді:


133

Оновлення жовтня 2016 року : зараз найпростіше: використовуйте lvh.me, на який завжди вказує 127.0.0.1.

Попередній відповідь :

Оскільки запит на зворотний дзвінок видається браузером, як відповідь на переспрямування HTTP, ви можете встановити свій .hosts файл або еквівалент, щоб вказати домен, який не дорівнює localhost127.0.0.1.

Скажімо, наприклад , зареєструвати таку функцію зворотного виклику з Twitter: http://www.publicdomain.com/callback/. Переконайтеся, що www.publicdomain.comу вашому файлі хостів вказано на 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 -машина / , на яку було пов’язано це запитання: Twitter oAuth callbackUrl - локальний розвиток хостів .

Цитувати статтю:

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

Це має бути простішим, ніж обмацуватися у файлі .hosts.

Зауважте, що зараз (серпень '14) bit.ly не дозволяє пересилати посилання на localhost; проте укорочувач посилань Google працює.

Редагування PS: (18 листопада): скорочувач посилань Google перестав надавати підтримку localhost або 127.0.0.1.


3
Я думав, що сервер викликає зворотний виклик, і тепер зрозумію, що oauth використовує клієнт як месенджер, і між серверами не робиться з'єднань, що робить його набагато простішим.
Крістіан Бенуа

10
Варто зазначити, що lvh.me належить джентльмену на ім'я Леві Кук (див. Gist.github.com/levicook/563675 ), і він є приватною власністю. Він здається приємним хлопцем, але це не формально дозволений домен глобальним органом, тому він може "теоретично" перестати працювати в якийсь момент часу.
Маріо Пешев

4
Станом на час написання, Google, здається, не дозволяє фантазійних розширень домену (наприклад .me) у URL-адресах для переадресації. Як результат, lvh.me не працював. Я знайшов успіх замість lacolhost.com .
PullJosh

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

2
@JonNylander Вони могли легко змінити свої записи DNS, щоб вказати на інший сайт, який прозоро зберігає код автентичності та стан та все ще переспрямовує назад до localhost. Якщо ви регулярно не перевіряєте 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

Ви можете редагувати файл хостів у Windows або Linux: C: \ Windows \ System32 \ Драйвери \ тощо \ hosts Linux: / etc / hosts

Дозвіл імені localhost обробляється в межах самого 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 Tab

    1. Додайте ваш приклад програми URI(http://localhost:3000) в Статутному JavaScript витоки URIs
  • На екрані згоди OAuth

    1. Додати mywebsite.comдо авторизованих доменів
  • Відредагуйте файл хостів у Windows або Linux, Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostsщоб додати 127.0.0.1 mywebsite.com (NB коментуйте будь-який, якщо є ще 127.0.0.1)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.