我正在尝试制作一个查询 tripit 的简单命令行应用程序下拉有关我的旅行历史的数据。我似乎卡在了 oauth 设置的某个地方,但我并不完全清楚我做错了什么。
我已经注册了一个应用程序并被分配了一个 API key 和 secret 。我已将它们分别作为 OAUTH_KEY
和 OAUTH_SECRET
存储在 creds.py
中。然后我进行了初始交换,返回了一个 token 和 secret ,我分别将其存储为 OAUTH_TOKEN
和 OAUTH_TOKEN_SECRET
。然后我尝试运行以下程序:
#!/usr/bin/env python
import sys
import time
import oauth2 as oauth
import creds
if __name__ == '__main__':
url = 'https://api.tripit.com/v1/list/trip/format/json'
params = {
'oauth_version': "1.0",
'oauth_nonce': oauth.generate_nonce(),
'oauth_timestamp': int(time.time())
}
token = oauth.Token(key=creds.OAUTH_TOKEN, secret=creds.OAUTH_TOKEN_SECRET)
consumer = oauth.Consumer(key=creds.OAUTH_KEY, secret=creds.OAUTH_SECRET)
params['oauth_token'] = token.key
params['oauth_consumer_key'] = consumer.key
req = oauth.Request(method="GET", url=url, parameters=params)
print req.to_url()
signature_method = oauth.SignatureMethod_HMAC_SHA1()
req.sign_request(signature_method, consumer, token)
client = oauth.Client(consumer)
resp, content = client.request(req.to_url(), "GET")
print resp
print content
报错:
{'status': '401', 'transfer-encoding': 'chunked',
'server': 'nginx', 'connection': 'keep-alive',
'date': 'Mon, 04 Jul 2011 00:13:15 GMT',
'content-type': 'application/json'}
{"Error":{"code":401,"detailed_error_code":106.1,
"description":"invalid token key: fc0e332517d03a515bf6fca5e3144e022c5f0076"}}
(其中 fc0e332517d03a515bf6fca5e3144e022c5f0076
是我来自身份验证步骤的 OAUTH_TOKEN
)
有没有人成功使用过这个服务,谁知道我做错了什么?也许我只是在使用 oauth 时做错了什么。
最佳答案
尝试使用“?format=json”而不是“/format/json”。我以前见过它以这种方式工作(但没有使用 JSON 接口(interface))。
https://stackoverflow.com/questions/6566356/
相关文章:
sql - 微软 Access : How can I count duplicate rows?
matlab - 从 MATLAB GUI 中发送 SIGINT
domain-driven-design - 如何更新聚合内的实体
python - 如何在 Mayavi2/VTK 中为绘图添加比例尺?
asp.net - 如何从使用 URL 路由的 ASP.NET 站点上的 URL 中删除参数?
ruby-on-rails - 数组的未定义方法 `serializable_hash'
hibernate - 如何通过 JPA 注释指定具有一定长度的整数