我不确定我在做什么。我应该为此使用图书馆吗?还是手动做?
所以我正在尝试使用 Python 中的 WiThings ( http://www.withings.com/api ) API 做一些工作。
为了执行某些请求,需要 OAuth 身份验证。我已经使用 requests 库并获得了一个 oauth 令牌和秘密令牌,以及我的消费者和消费者秘密令牌。
现在我不得不提出请求,并且遇到了一些问题。我需要发出的请求格式如下(来自他们的 API 的示例):
http://wbsapi.withings.net/notify?action=subscribe
&callbackurl=http%3a%2f%2fwww.yourdomain.net%2fyourCustomApplication.php
&comment=Your%20Own%20Application%20Description
&oauth_consumer_key=c331c571585e7c518c78656f41582e96fc1c2b926cf77648223dd76424b52b
&oauth_nonce=accbac1b7ee2b86b828e6dc4a5a539b2
&oauth_signature=XfobZMboIg2cRyNKAvyzONHHnKM%3D
&oauth_signature_method=HMAC-SHA1
&oauth_timestamp=1311842514
&oauth_token=887557411788d5120537c6550fbf2df68921f8dd6f8c7e7f9b441941eb10
&oauth_version=1.0
&userid=831
据我所知,这几乎是 OAuth 的典型格式,除了最后的用户 ID。
那么,我可以使用请求库发出这样的请求吗?还是其他图书馆?如何使用 comment 和 userid 和 callbackurl 字段获得正确的 URL?还是我需要手动生成此 URL?如果是这种情况,那么最好的方法是什么?
非常感谢任何帮助,因为我已经坚持了一段时间。
编辑
所以,为了澄清一下,我理解我所引用的代码的大约 98%。最后我只有一个小问题。
所以我在这里,使用以下代码:
from __future__ import unicode_literals
from urlparse import parse_qs
import requests
from requests_oauthlib import OAuth1Session
consumer_key = '**Valid consumer key**'
consumer_secret = '**Valid consumer secret**'
oauth_key = '**Valid oauth key obtained through requests library and OAuth workflow**'
oauth_secret ='**Valid oauth secret obtained through requests library and OAuth workflow**'
verifier = '**Valid consumer key obtained through requests library and OAuth workflow**'
base_url = 'http://wbsapi.withings.net/notify'
params = {
'action': 'subscribe',
'callbackurl': '**callback URL**',
'comment': '**comment**',
'oauth_consumer_key': '**consumer_key**',
'oauth_nonce': 'etc etc',
'oauth_signature' : '' # <-------------- Where do I get this
# etc etc... I have everything else
}
r = requests.get("http://wbsapi.withings.net/notify", params=params)
这就是我所需要的。我有我需要的一切,除了签名。有没有办法从 oauth 库中获取签名?这就是一直阻碍我的一切。