Проблемы с python-oauth2 и Yahoo Fantasy Sports API - PullRequest
3 голосов
/ 26 октября 2010

Я пытаюсь создать веб-приложение, которое получает информацию о фэнтези-спорте из API Yahoo. Я знаю, что для использования API требуется использование OAuth. Он создается с помощью Flask и будет работать на Google App Engine.

Я пытался использовать python-oauth2 от людей из SimpleGeo, и я продолжаю получать ту же самую точную ошибку при попытке сделать работу по разработке. Вот фрагмент кода:

import oauth2 as oauth

consumer = oauth.Consumer(key=settings.OAUTH_CONSUMER_KEY, secret=settings.OAUTH_SHARED_SECRET)
request_token_url = "https://api.login.yahoo.com/oauth/v2/get_request_token"
client = oauth.Client(consumer)

resp, content = client.request(request_token_url, "GET")

Вот ответ об ошибке, которую я получаю:

{'status': '401', 'кодировка передачи': 'chunked', 'connection': 'close', 'date': 'вт, 26 окт. 2010 18:24:16 GMT', 'p3p ':' policyref = "http://info.yahoo.com/w3c/p3p.xml", CP =" CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONI TELO OTPi НАШИ ДЕЛИ САМИ ОТРИ UNRI PUBI IND PHY ONL UNI PUR FIN КОМ НАВ ИНТ ДЕМ CNT STA ПОЛЬ HEA PRE LOC GOV " ',' тип контента ':' application / x-www-form-urlencoded ',' www-authenticate ':' OAuth oauth_problem = consumer_key_rejected '}

Теперь, я прочитал документацию, доступную через Yahoo, и я озадачен, потому что (а) это кажется таким простым и (б) я не могу понять, где я иду не так. Я использую ключ потребителя и общий секрет, предоставленный мне Yahoo.

Это мой первый опыт работы с OAuth, и любая помощь будет принята с благодарностью.

Ответы [ 2 ]

6 голосов
/ 17 декабря 2010

Как указала Канака, вызов yahoo get_access_token требует oauth_callback, а simplegeo / oauth2 не позволяет вам легко его указать.

Вот несколько обходных путей:

Вместо simplegeo / python-oauth2, возьмите zbowling / python-oauth2 (который является ветвью simplegeo, но с хорошим кодом и исправлениями ошибок).), а затем добавьте дополнительный параметр:

parameters={'oauth_callback': 'http://example.com/callback/'}

в вызов Client.request.Например:

client = Client(consumer)
client.request('https://api.login.yahoo.com/oauth/v2/get_request_token',
               method='GET',
               parameters={'oauth_callback': 'http://example.com/callback/'})

Если вы настаиваете на работе с simplegeo / python-oauth2, посмотрите подробное обсуждение проблем с simplegeo / oauth2 и yahoo oauth на этой странице .В нем есть фрагменты кода, которые вы можете использовать.

2 голосов
/ 31 октября 2010

Я только что попробовал использовать python-oauth2 (simplegeo's) и получил ту же проблему.

Одна проблема с реализацией simplegeo состоит в том, что oauth_callback легко предоставить в запросе токена запроса, и в соответствии с этим требуется: http://developer.yahoo.com/oauth/guide/oauth-requesttoken.html

Но даже когда я заставляю это 'oob', у меня все еще есть проблема.

Вы можете попробовать собственную библиотеку Python от Yahoo и посмотреть, поможет ли это (а затем опубликовать здесь то, что вы нашли): http://github.com/yahoo/yos-social-python. Я нашел это здесь: http://developer.yahoo.com/social/sdk/

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