2013-07-12 2 views
2

Я действительно боролся с тем, чтобы в будущем OAuth работал с API WiThings, используя Python 3.3. Для справки, вот документация для WiThings: http://www.withings.com/apiWiThings API OAuth с Python

Теперь ... Как я уже сказал, я работал с API WiThings в Python, используя библиотеку запросов(). Предположительно, это построено в поддержку OAuth 1.0.

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

b'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<html><head>\n<title>413 Request Entity Too Large</title>\n</head><body>\n<h1>Request Entity Too Large</h1>\nThe requested resource<br />/index.php<br />\ndoes not allow request data with POST requests, or the amount of data provided in\nthe request exceeds the capacity limit.\n<hr>\n<address>Apache Server at oauth.withings.com Port 80</address>\n</body></html>\n' 

Любая идея, что может быть причиной этого? У меня такое чувство, как WiThings ... но их поддержка ужасна.

Далее, я сделал некоторые дополнительные исследования, и нашел это: https://github.com/maximebf/python-withings

Хотя и довольно плохо документированы, я установил его, и этот код:

from __future__ import unicode_literals 
from urllib.parse import parse_qs 
import requests 
from requests_oauthlib import OAuth1 
import withings 

CONSUMER_KEY = "omitted" 

CONSUMER_SECRET = "omitted" 

auth = WithingsAuth(CONSUMER_KEY, CONSUMER_SECRET) 
authorize_url = auth.get_authorize_url() 
print("Go to %s allow the app and copy your oauth_verifier" %authorize_url) 
oauth_verifier = raw_input('Please enter your oauth_verifier: ') 
creds = auth.get_credentials(oauth_verifier) 

client = WithingsApi(creds) 
measures = client.get_measures(limit=1) 
print("Your last measured weight: %skg" % measures[0].weight) 

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

File "withings.py", line 5, in <module> 
    import withjings 
File C:\User_Directory\withings.py", line 11, in <module> 
    auth = WithingsAuth(CONSUMER_KEY, CONSUMER_SECRET) 
NameError: name 'WithingsAuth' is not defined 

Любая помощь по любым из этих вопросов? Кто-нибудь успешно работал с Withings in python?

Спасибо за помощь, ребята

ответ

0

Это должно быть

from withings import WithingsAuth, WithingsApi 

Для меня он работает хорошо, я был в состоянии извлечь мой последний измеренный вес.

0

Вам либо нужно импортировать WithingsAuth из подходов, либо указать, что вы хотите использовать указания. WithingsAuth. Изменение вашего кода становится следующим:

from __future__ import unicode_literals 
try: 
    from urllib.parse import parse_qs 
except: 
    import urlparse as parse_qs 

try: 
    input_method = raw_input 
except: 
    input_method = input 

import requests 
from requests_oauthlib import OAuth1 
import withings 

CONSUMER_KEY = "omitted" 

CONSUMER_SECRET = "omitted" 

auth = withings.WithingsAuth(CONSUMER_KEY, CONSUMER_SECRET) 
authorize_url = auth.get_authorize_url() 
print("Go to %s allow the app and copy your oauth_verifier" %authorize_url) 
oauth_verifier = input_method('Please enter your oauth_verifier: ') 
creds = auth.get_credentials(oauth_verifier) 

client = withings.WithingsApi(creds) 
measures = client.get_measures(limit=1) 
print("Your last measured weight: %skg" % measures[0].weight) 
Смежные вопросы