o使用Twitter API和Python进行验证

时间:2013-04-21 18:23:29

标签: python oauth twitter twitter-oauth

我正在尝试获取Twitter的oauth request_token,如此处所述,调用“oauth / request_token”:https://dev.twitter.com/docs/auth/implementing-sign-twitter

我在这里使用encode_params函数生成参数:https://github.com/sixohsix/twitter/blob/master/twitter/oauth.py

然后我将返回的字符串包装在一个dict中,并键入“Authorization”并将其转储到我正在使用python请求库进行的Post请求的Headers中。这是我用来创建请求的两行。

ep = "OAuth " + auth.encode_params(baseUrl, method, params)
response = requests.post(baseUrl+method, headers={ "Authorization" : ep})

最终标题看起来像这样(consumer_key已修改):

{'Accept': '*/*',
 'Accept-Encoding': 'gzip, deflate, compress',
 'Authorization': 'OAuth oauth_callback=http%253A%252F%252Fec2-54-244-189-248.us-west-2.compute.amazonaws.com%252Fct%252Ftwitter_login_handler%252F&oauth_consumer_key=xxx&oauth_nonce=14937468581358710045&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1366568033&oauth_version=1.0&oauth_signature=kiYucZzPY%2FXy2WyJliJ6YcggVzQ%3D',
 'Content-Length': '0',
 'User-Agent': 'python-requests/1.2.0 CPython/2.7.3 Linux/3.5.0-21-generic'}

但是,我仍然收到401响应,上面写着:“无法验证oauth签名和令牌”

知道我做错了什么吗?真的很感激任何帮助。

3 个答案:

答案 0 :(得分:0)

我不能对您引用的脚本说话,但如果您愿意尝试另一个库作为rauth的作者,我可以推荐它。这是a working Twitter example。希望有所帮助。

答案 1 :(得分:0)

我最终使用python-oauth2。他们的说明有点过时了,所以我更新了它们并提交了拉取请求。截至目前,它尚未被接受,但此处是指向forked repo的链接,其中包含更新的说明。

答案 2 :(得分:0)

希望这有助于其他人...... 从maxcountryman引用的代码 - 它有一个我在其他地方找不到的评论:

# Get a real consumer key & secret from https://dev.twitter.com/apps/new

这帮助我取得了很大进步...... 干杯,伊恩