Как получить пользовательские данные с FourSquare, используя Python (с аутентификацией) - PullRequest
0 голосов
/ 13 сентября 2011

Я пытаюсь запросить API FourSquare, чтобы получить информацию о пользователе и информацию о месте проведения. Я успешно смог получить данные, ориентированные на место проведения, однако я не знаю, какая информация ориентирована на пользователя. Я пытался перейти по этой ссылке . Однако url request_token ничего не возвращает. :(. Было бы замечательно, если бы кто-то мог указать.
1) Где я могу ошибаться.
2) Кроме того, предложите правильный подход, если мой подход полностью неверен.

РЕДАКТИРОВАТЬ - Вот некоторые из измененного кода из фрагмента

     <!-- language: python -->
                     ### GET A REQUEST TOKEN ###

consumer=oauth.Consumer(key="NN3TBSPRBCVJMWCDPN1WELO1LOQLXAA31Q40WHW2L1BI5L1X", secret="RVMP1GUQCMFLX31ME5DJKKMZDZFBNYYVV5BKGVXZNWN2MDVM")

request_token_url = 'http://foursquare.com/oauth/request_token'

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

request_token = dict(urlparse.parse_qsl(content))

print 'Request tokens are',request_token.keys()
token = oauth.Token(request_token['oauth_token'], request_token['oauth_token_secret'])


### CREATE A SIGNED CONSUMER REQUEST ###

# Set the API endpoint 
url = "http://api.foursquare.com/v1/authexchange"

# Set the base oauth_* parameters along with any other parameters required
# for the API call.
params = {
'oauth_version': "1.0",
'oauth_nonce': oauth.generate_nonce(),
'oauth_timestamp': int(time.time()),
'fs_username': 'MyFourSquare Username',
'fs_password': 'MyFourSquarePassword',
'oauth_token': request_token['oauth_token'],
'oauth_consumer_key': consumer.key,
}

req = oauth.Request(method="GET", url=url, parameters=params)

# Sign the request.
signature_method = oauth.SignatureMethod_HMAC_SHA1()
req.sign_request(signature_method, consumer, token)


### Make the auth request ###

test = 'http://api.foursquare.com/v1/test.json'

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

print resp
print content # prints 'ok'

Я получаю следующую ошибку при запуске кода.

Request tokens are []
Traceback (most recent call last):
File "testingFour.py", line 60, in <module>
token = oauth.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
KeyError: 'oauth_token'

Из того, что я могу разглядеть, токены запросов возвращаются пустыми, есть идеи, почему это может происходить?

----------------------------------- ВТОРОЙ - РЕДАКТИРОВАТЬ: ------- -------------------------------------------------- -----------------
Это ошибка, которую я получаю, когда пытаюсь распечатать содержимое. Я знаю, что я вызываю неправильный URL, но чёткая замена oauth на ouath2 не помогает

 {'status': '400', 'content-length': '91', 'expires': 'Thu, 15 Sep 2011 12:04:57 UTC', 'server': 'nginx/0.8.52', 'connection': 'keep-alive', 'pragma': 'no-cache', 'cache-control': 'no-cache, private, no-store', 'date': 'Thu, 15 Sep 2011 12:04:57 GMT', 'content-type': 'text/plain; charset=utf-8'} AS PART OF THE APIV1 SUNSET, OAUTH V1 HAS BEEN DIABLED. SEE HTTP://DEVELOPER.FOURSQUARE.COM
Request tokens are []
Traceback (most recent call last):
File "testingFour.py", line 60, in <module>
token = oauth.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
KeyError: 'oauth_token'

Спасибо за ваше время!

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

Вы пытаетесь подключиться к FourSquare API v1 .Но теперь это отключено:

AS PART OF THE APIV1 SUNSET, OAUTH V1 HAS BEEN DIABLED. SEE HTTP://DEVELOPER.FOURSQUARE.COM

Видимо, пример, который вы используете, устарел.

1 голос
/ 10 января 2012

Как уже говорилось, библиотека foursquare V1 устарела и закрыта.

Документы для API Foursquare V2 здесь: https://developer.foursquare.com/docs/

Всестороннюю библиотеку Python с четырьмя квадратами можно найти здесь: https://github.com/mLewisLogic/foursquare

Pythonic, простое, полное юнит-тестирование. Отказ от ответственности: я написал библиотеку

...