2

最近、Python 3.3 を使用して OAuth を WiThings API で動作させるのに苦労しています。参考までに、WiThings のドキュメントは次のとおりです: http://www.withings.com/api

今...私が言ったように、リクエストライブラリ(http://docs.python-requests.org/en/latest/)を使用して、PythonでWiThings APIを扱ってきました。おそらく、これには 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

これらの問題のいずれかに関するヘルプはありますか? Python で Withings を使用して成功した人はいますか?

助けてくれてありがとう

4

2 に答える 2

0

withings から WithingsAuth をインポートするか、withings.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) 
于 2016-05-29T14:41:27.880 に答える
0

そのはず

from withings import WithingsAuth, WithingsApi 

私にとってはうまく機能し、最後に測定した体重を抽出することができました。

于 2014-05-15T08:05:41.697 に答える