Как мне развиваться против OAuth локально? - PullRequest
35 голосов
/ 22 марта 2009

Я создаю приложение Python, которое должно взаимодействовать с поставщиком услуг OAuth. ИП требует, чтобы я указал URL обратного вызова. Указание localhost, очевидно, не сработает. Я не могу настроить общедоступный сервер. Любые идеи, кроме оплаты за сервер / хостинг? Это вообще возможно?

Ответы [ 7 ]

18 голосов
/ 22 марта 2009

Две вещи:

  1. Поставщик услуг OAuth, о котором идет речь, нарушает спецификацию OAuth, если выдает ошибку, если не указан URL-адрес обратного вызова. callback_url имеет значение , которое является необязательным параметром .

  2. Но, кроме педантизма, вы, вероятно, захотите получить обратный вызов, когда пользователь сделает это, чтобы вы знали, что можете обменять токен запроса на токен доступа. Документы для разработчиков FireEagle от Yahoo содержат много полезной информации о том, как это сделать.

Даже во втором случае URL-адрес обратного вызова вообще не должен быть виден из Интернета. Поставщик услуг OAuth перенаправит браузер, который пользователь использует для предоставления своего имени пользователя / пароля, на URL обратного вызова.

Два распространенных способа сделать это:

  1. Создайте тупой веб-сервис из вашего приложения, который прослушивает какой-либо порт (скажем, http://localhost:1234/) для завершения обратного вызова или
  2. Зарегистрируйте обработчик протокола (вам нужно будет обратиться к документации для вашей ОС, чтобы узнать, как это сделать, но он позволяет работать таким вещам, как ).

(Пример потока, который, я полагаю, вы описываете , живет здесь .)

10 голосов
/ 24 августа 2012

Если вы используете * стиль системы nix, создайте псевдоним, например 127.0.0.1 mywebsite.dev в /etc/hosts (вам нужна строка, аналогичная вышеупомянутой в файле, используйте http://website.dev/callbackurl/for/app в URL обратного вызова и во время локальное тестирование.

4 голосов
/ 01 ноября 2011

Это было с OAuth Facebook - я на самом деле был смог указать 'http://127.0.0.1:8080' в качестве URL сайта и URL обратного вызова. Потребовалось несколько минут для распространения изменений в приложении Facebook, но затем это сработало.

1 голос
/ 02 июня 2010
1 голос
/ 22 марта 2009

Это может помочь вам:

http://www.marcworrell.com/article-2990-en.html

Это php, поэтому его будет довольно просто настроить на вашем сервере разработки.

Я пробовал это один раз:

http://term.ie/oauth/example/

Это довольно просто. У вас есть ссылка для скачивания кода внизу.

0 голосов
/ 03 апреля 2013

Итак, как я решил эту проблему (используя OAuth-интерфейс BitBucket), указав URL-адрес обратного вызова для localhost (или как там, черт возьми, вы действительно хотите), а затем следуя URL-адресу авторизации с помощью curl, но с поворотом возврата HTTP заголовок. Пример:

curl --user BitbucketUsername:BitbucketPassword -sL -w "%{http_code} %{url_effective}\\n" "AUTH_URL" -o /dev/null

Вставка учетных данных и URL-адреса авторизации (не забудьте экранировать восклицательный знак!).

То, что вы должны получить, выглядит примерно так:

200 http://localhost?dump&oauth_verifier=OATH_VERIFIER&oauth_token=OATH_TOKEN

И вы можете очистить от этого присягу.

То же самое в python:

import pycurl
devnull = open('/dev/null', 'w')
c = pycurl.Curl()

c.setopt(pycurl.WRITEFUNCTION, devnull.write)
c.setopt(c.USERPWD, "BBUSERNAME:BBPASSWORD")
c.setopt(pycurl.URL, authorize_url)
c.setopt(pycurl.FOLLOWLOCATION, 1) 
c.perform()

print c.getinfo(pycurl.HTTP_CODE), c.getinfo(pycurl.EFFECTIVE_URL)

Надеюсь, это кому-нибудь пригодится!

0 голосов
/ 25 июня 2010

Вы могли бы создать 2 приложения? 1 для развертывания, а другой для тестирования.

В качестве альтернативы вы также можете включить параметр oauth_callback при запросе токена запроса. Некоторые провайдеры будут перенаправлять на URL, указанный в oauth_callback (например, Twitter, Google), но некоторые будут игнорировать этот URL-адрес обратного вызова и перенаправлять на тот, который указан во время настройки (например, Yahoo)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...