因此,经过年天努力从https://api.twitter.com/oauth/request_token
获取request_token后,我终于成功生成了基本签名字符串和HMAC-SHA1签名,并收到了{{1}来自oauth_token
。
现在,我对下一步感到有点困惑。我的最终目标是能够以编程方式简单地推送推文。
我知道我需要从https://api.twitter.com/oauth/request_token
获取访问令牌,但我不确定如何继续。我知道我需要将来自https://api.twitter.com/oauth/access_token
的来电收到的oauth_token
值发送到/oauth/request_token
,但我在概念上被/oauth/access_token
oauth_verifier
字段混淆了标头
关于此演讲的大多数教程或文档都是根据将用户的浏览器重定向到登录页面,然后用于为{{生成图钉编号 1}}。但就我而言,没有浏览器:我只是在Python中编写一个自动守护进程,需要定期提取某些推文。所以没有浏览器,也没有涉及人类“用户”。那么Authorization
字段如何适用于此?
答案 0 :(得分:8)
您要找的是application-only authentication。
以下是 Python 3.3 中的一个示例,介绍如何使用requests包获取可用于仅应用程序请求的承载令牌,并假设值consumer_key
和{ {1}}分别保存您的Twitter API使用者密钥和密码:
consumer_secret
然后,可以使用承载令牌为您的请求创建授权标头,如下所示:
import base64
import requests
# get bearer token for application only requests
bearer_token_credentials = base64.urlsafe_b64encode(
'{}:{}'.format(consumer_key, consumer_secret).encode('ascii')).decode('ascii')
url = 'https://api.twitter.com/oauth2/token'
headers = {
'Authorization': 'Basic {}'.format(bearer_token_credentials),
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
}
data = 'grant_type=client_credentials'
response = requests.post(url, headers=headers, data=data)
response_data = response.json()
if response_data['token_type'] == 'bearer':
bearer_token = response_data['access_token']
else:
raise RuntimeError('unexpected token type: {}'.format(response_data['token_type']))