对不起,如果这是一个noob问题,但是我试图用Vimeo测试并开始使用RAuth python库。
我正在使用应用程序页面上提供的访问令牌/秘密,用于我在开发者网站上注册的应用程序Vimeo。因此,我想问题的第一部分是:这是一个有效的访问令牌/秘密,还是我确实需要通过OAuth过程,尽管我试图使用这个API访问我公司的帐户?
假设这是一个有效的令牌,那么问题的实质是,考虑到这个实现:
from rauth.session import OAuth1Session
session = OAuth1Session(
consumer_key=VIMEO_CLIENTID,
consumer_secret=VIMEO_CLIENTSECRET,
access_token=VIMEO_ACCESSTOKEN,
access_token_secret=VIMEO_ACCESSTOKENSECRET )
response = session.get(VIMEO_URL_BASE + 'vimeo.oauth.checkAccessToken')我得到以下答复:
{"response": {"err": {"expl": "The oauth_signature passed was not valid.", "code": "401", "msg": "Invalid signature"}, "stat": "fail", "generated_in": "0.0041"}基于类似于此的OAuth头(注意,我只是从会话对象中提取了这些标题,所以键不是内部使用的,而是通过Rauth库定义的):
{
"signature": "DH9ueZmrnguFgBIDZs7ZQPE7qHs=",
"nonce": "8bcbc130548c0677cd134e7d7f22b17df7a2eee6",
"timestamp": 1380266167,
"oauth_version": "1.0",
"token": VIMEO_ACCESSTOKENSECRET,
"consumer_key": VIMEO_CLIENTID,
"sig_method": "HMAC-SHA1"
}我读过一些关于时钟被关的帖子。我的dev工作站正在检查time.windows.com,不过我确实用time-a.nist.gov切换了它,以防万一。我还关闭了同步,并手动改变了我的时钟几秒钟。所有这些都没有效果。我还试着对照我的时钟检查developer.vimeo.com站点的操场示例中的时间戳,它们最多在1-2秒之内。
我觉得我在做一些不明智的事情,尽管假设第一个问题的答案是正确的,并且根据我在RAuth代码中所读到的内容,如果我有一个有效的令牌和秘密,我应该能够使用这些令牌和秘密,而不必经过整个OAuth过程,因为这将生成一个新的令牌/秘密。
再说一遍,我是OAuth新手,对Python相对陌生,所以我可能在做一些蠢事。
发布于 2013-09-28 15:03:45
这里的问题是,您试图获取整个URL,而不允许Rauth通过请求的API对参数进行签名。这不起作用,因为Rauth需要能够查看参数,然后以特定的方式签名。相反,您应该这样做:
print sess.get('http://vimeo.com/api/rest/v2', params={'method': 'vimeo.oauth.checkAccessToken'}).content
<?xml version="1.0" encoding="UTF-8"?>\n<rsp generated_in="0.0044" stat="ok">\n <oauth>\n <token>...</token>\n <permission>delete</permission>\n <user display_name="Max Countryman" id="16760357" username="user16760357"/>\n </oauth>\n</rsp>\n'请记住,Rauth是请求,但添加了方便的OAuth处理。这意味着你应该像使用请求一样使用Rauth。
以下内容应该有效(我亲自测试了我的Vimeo凭据,它似乎像预期的那样起作用了):
from rauth.session import OAuth1Session
session = OAuth1Session(consumer_key=VIMEO_CLIENTID,
consumer_secret=VIMEO_CLIENTSECRET,
access_token=VIMEO_ACCESSTOKEN,
access_token_secret=VIMEO_ACCESSTOKENSECRET)
response = session.get('http://vimeo.com/api/rest/v2', params={'method': 'vimeo.oauth.checkAccessToken'})希望这能帮上忙!
https://stackoverflow.com/questions/19045362
复制相似问题