【翻译】Tweepy 3.5.0 Doc (2) Authentication Tutorial

Authentication Tutorial

简介

Tweepy支持 oauth认证。Tweepy中的身份认证由 tweepy.AuthHandler 类进行处理。


OAuth 身份认证

Tweepy尽可能试着简化OAuth认证。首先我们需要在Twitter注册一个客户端应用。当创建完成之后你应该能获得你的consumer token 和 consumer secret。将这两个码存好,你将经常用到。

下一部就是创建 OAuthHandler 实例。在这我们需要把之前得到的 consumer token 和 consumer secret 传入:

auth = tweepy.OAuthHandler(consumer_token, consumer_secret)

如果你已经有了一个网络应用并且正在使用一个响应链接(callback URL),那么你就应该按如下方式进行传递:

auth = tweepy.OAuthHandler(consumer_token, consumer_secret,
callback_url)
如果你认为你的响应url不会再变化了,那么你最好直接在twitter.com中应用的设置中将url设置进去。

与基本 auth 不同,在使用OAuth时我们必须再夺走几步才能正式开始使用API。下面就是我们需要完成的步骤。


1. 从 twitter 获得一个 request token。

2. 将用户重定向至 twitter.com 来给应用授权。

3. 如果twitter使用响应函数,它就会将用户重定向给我们,否则用户必须手动给我们提供verifier code(不知道对不对)(原文:If using a callback, twitter will redirect the user to us. Otherwise the user must manually supply us with the verifier code.)

4. 将授权的 request token 换为 access token。


所以,下面让我们取回 request token 以进行之后的内容:

try:
    redirect_url = auth.get_authorization_url()
except tweepy.TweepError:
    print 'Error! Failed to get request token.'
这段代码从twitter请求token,并且返回得到用户应该被重定向以用来给我们授权的URL。现在,如果这是一个桌面应用,我们只能先抓住OAuthHandler实例并等待用户返回。在一个网页应用里,我们可以使用响应请求。所以我们必须将这个request token储存在绘画中,因为我们在响应URL的请求内会使用到这个token。下面是一个关于在绘画中储存request token的伪例子:

session.set('request_token', auth.request_token)

所以现在我们可以将用户重定向到 get_authorization_url() 方法之前返回给我们的url上了。


注:所以这块实际上的意思就是用户在使用你的app并要登陆时,app向Twitter发送一个请求,让其返回一个url好使用户可以在这个twitter的url上给你的app授权,使得你的app可以以用户twitter账号的名义获得数据或进行操作。


如果这是一个桌面应用(或者任何不用响应函数的应用),那么我们必须向用户询问twitter在对我们授权后返回的 verifier code。 在一个网络应用内部,这个 verifier value 会作为 从Twitter 返回的 URL 中的 GET query 参数而被响应 request 返回。

# Example using callback (web app)
verifier = request.GET.get('oauth_verifier')

# Example w/o callback (desktop)
verifier = raw_input('Verifier:')

最后一步就是用 request token 来交换一个 access token。这个 access token 是真正的打开 Twitter API 宝库的钥匙。我们通过以下操作来获得这个 token:
# Let's say this is a web app, so we need to re-build the auth handler
# first...
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
token = session.get('request_token')
session.delete('request_token')
auth.request_token = token

try:
    auth.get_access_token(verifier)
except tweepy.TweepError:
    print 'Error! Failed to get access token.'


你完全可以将这个 access token 留下以后接着用,没有必要每次都重新获取。 Twitter现在并不会给这些 token 设定过期时间,所以只有当用户驳回了应用接入的许可时这个token才不起作用。你需要储存的是两个字符串数值:key 和 secret:

auth.access_token
auth.access_token_secret
你可以将它们放入数据库,文件或任何你储存数据的地方。同样你也可以在 OAuthHandler 实例中设置这两个提前储存好的 token:

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(key, secret)

注:当然,access_token 和 access_token_secret 也可以在 app.twitter.com 轻松获得。


所以到目前为止,OAuthHandler 就全部设定好了,我们已经可以开始正式的工作了:

api = tweepy.API(auth)
api.update_status('tweepy + oauth!')









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值