使用Twitter OAuth2 Python入门

35 投票
2 回答
25410 浏览
提问于 2025-04-16 19:50

我正在尝试用Python连接Twitter,但这让我感到非常沮丧。
我看到的所有资料都说我需要一个消费者密钥、一个消费者秘密、一个访问密钥和一个访问秘密。例如:使用Python OAUTH2访问OAUTH保护的资源

我可以从我创建的小测试应用的Twitter设置页面获取消费者密钥和消费者秘密,但另外两个我该去哪找呢?经过一番搜索,似乎大家都觉得这个信息太明显了,不值得写出来,所以我可能有点傻,但能不能有人给像我这样的人详细说一下呢?

编辑:
好的,要获取这些信息,打开你的Twitter应用设置,然后点击"我的访问令牌"链接。
我想当你在找访问令牌的时候,点击一个叫“我的访问令牌”的链接可能会有帮助。我真希望我能把我的愚蠢归咎于酒,但其实我也不知道……

2 个回答

-4

我个人使用的是 tweepy,它为Twitter的API提供了一个很方便的Python工具包。

109

几乎所有博客上的OAuth示例都只讲了授权阶段,而没有说明在获得这些信息后,如何实际发起请求。其实一旦你明白了这个过程,后面的操作就很简单了。不过,理解这一点的初期确实有点难。

如果你只是想通过脚本或应用程序访问自己的Twitter账户,可以在dev.twitter.com的应用设置页面底部找到你的访问令牌(在Python的OAuth库中叫做key)和密钥,位置在你的访问令牌标题下。

import oauth2 as oauth
import json

CONSUMER_KEY = "your app's consumer key"
CONSUMER_SECRET = "your app's consumer secret"
ACCESS_KEY = "your access token"
ACCESS_SECRET = "your access token secret"

consumer = oauth.Consumer(key=CONSUMER_KEY, secret=CONSUMER_SECRET)
access_token = oauth.Token(key=ACCESS_KEY, secret=ACCESS_SECRET)
client = oauth.Client(consumer, access_token)

timeline_endpoint = "https://api.twitter.com/1.1/statuses/home_timeline.json"
response, data = client.request(timeline_endpoint)

tweets = json.loads(data)
for tweet in tweets:
    print tweet['text']

这个示例使用的是Python库python-oauth2,这个名字有点误导,它其实是一个OAuth库,而不是OAuth2库。

如果你想让其他人也能授权他们的账户供你的应用使用,那你就需要实现一个重定向的过程。具体来说,你需要向Twitter请求一个令牌和密钥的组合,然后把用户重定向到Twitter的授权页面,用户登录并授权后,会被重定向回你的应用。接着,你就可以用这个请求令牌换取一个访问令牌和密钥的组合,然后存储这些信息,以便像上面那样发起请求。

http://github.com/simplegeo/python-oauth2的Readme中,有一个Twitter三步OAuth示例,似乎涵盖了需要做的事情。

撰写回答