Подтвердить что ты не робот

Как я могу развиваться против OAuth на местном уровне?

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

4b9b3361

Ответ 1

Две вещи:

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

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

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

Два общих способа сделать это:

  • Создайте немой веб-сервис из вашего приложения, которое прослушивает какой-либо порт (скажем, http://localhost:1234/) для обратного вызова завершения или
  • Зарегистрируйте обработчик протокола (вам нужно будет проверить с документацией для вашей ОС, в частности, о том, как это сделать, но позволяет использовать такие функции, как < a href= "skype: 555-1212" > )).

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

Это php, поэтому должно быть довольно просто настроить на своем dev-сервере.

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

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

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

Ответ 6

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

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

Ответ 7

Итак, как я решил эту проблему (используя интерфейс BitBucket OAuth), было указано URL-адрес обратного вызова на localhost (или, что бы вы ни делали на самом деле), а затем после URL-адреса авторизации с завитком, но с завихрением только возврата 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

И вы можете очистить этот параметр oath_verifier.

Выполнение этого же в 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)

Надеюсь, это полезно для кого-то!