关于推特开发者账号 elevated academic 请看此贴:
推特开发者账号申请权限
或
搜索微信公众号 twitterDeveloper 获得帮助
推特授权使用的还是oauth1.0的模式,官网介绍比较麻烦,也很不友好,所以下面将介绍一种简单的授权方法。
from __future__ import print_functionfrom requests_oauthlib import OAuth1SessionREQUEST_TOKEN_URL = 'https://api.twitter.com/oauth/request_token'
ACCESS_TOKEN_URL = 'https://api.twitter.com/oauth/access_token'
AUTHORIZATION_URL = 'https://api.twitter.com/oauth/authorize'consumer_key = '********'
consumer_secret = '*********'def get_auth_token():oauth_client = OAuth1Session(consumer_key, client_secret=consumer_secret,callback_uri='oob')resp = oauth_client.fetch_request_token(REQUEST_TOKEN_URL, )url = oauth_client.authorization_url(AUTHORIZATION_URL, auth_callback='oob')data = {"url": url,"oauth_token_secret": resp.get('oauth_token_secret')}return datadef get_access_token(oauth_token, oauth_token_secret, pincode):oauth_client = OAuth1Session(consumer_key, client_secret=consumer_secret,resource_owner_key=oauth_token,resource_owner_secret=oauth_token_secret,verifier=pincode)# try:# resp = oauth_client.fetch_access_token(ACCESS_TOKEN_URL)# except ValueError as e:# raise 'Invalid response from Twitter requesting temp token: {0}'.format(e)resp = oauth_client.fetch_access_token(ACCESS_TOKEN_URL)print('''Your tokens/keys are as follows:consumer_key = {ck}consumer_secret = {cs}access_token_key = {atk}access_token_secret = {ats}'''.format(ck=consumer_key,cs=consumer_secret,atk=resp.get('oauth_token'),ats=resp.get('oauth_token_secret')))print(get_auth_token()) #1
get_access_token("111111111111111","22222222222",'333333333') #2
1.先把consumer_key
,consumer_secret
换成自己的
2.注释get_access_token("111111111111111","22222222222",'333333333')
,运行代码,结果如下:
{'url': 'https://api.twitter.com/oauth/authorize?auth_callback=oob&oauth_token=111111111111111', 'oauth_token_secret': '22222222222'}
找个地方记下oauth_token
,oauth_token_secret
参数的值
把https://api.twitter.com/oauth/authorize?auth_callback=oob&oauth_token=111111111111111
这个url复制到浏览器中,如果浏览器已经有登录好的推特账号,那么就会出现一个授权界面
点击授权应用程序,然后就会出现一个pincode
记住这个pincode。
3.把print(get_auth_token())
注释。
get_access_token("111111111111111","22222222222",'333333333')
的注释取消,把oauth_token
,oauth_token_secret
,pincode
作为参数写进去,运行。
结果如下:
这样就完成了授权。
4.在postman中把刚才的参数写进去,postman如何使用twitter api可以在官网看到:https://documenter.getpostman.com/view/9956214/T1LMiT5U。
在postman中构造请求,ids的参数是授权用户的某个推文id:
https://api.twitter.com/2/tweets?tweet.fields=non_public_metrics&ids=***********&expansions=attachments.media_keys&media.fields=duration_ms,height,media_key,preview_image_url,public_metrics,type,url,width,alt_text,non_public_metrics,promoted_metrics,organic_metrics
可以看到返回中出现了授权用户的推文访问量。