Cha*_*ere 5 python authentication api twitter
我正在尝试获取公司在市场营销仪表板上的推文的参与度数据。我可以通过Tweepy进行身份验证,以获取基本的Twitter feed数据,但是参与端点给我带来了麻烦。我是否有可能先通过Tweepy进行身份验证,然后再使用不记名令牌来弄乱事情?
import tweepy
import requests
import json
import base64
import urllib.parse
consumer_key = <>
consumer_secret = <>
access_token = <>
access_token_secret = <>
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
print(api.me().name)
def get_tweet_ids():
scandy_tweets = api.user_timeline('TwitterHandle', count=5)
tweet_id_list = []
for twit in scandy_tweets:
json_str = json.loads(json.dumps(twit._json))
tweet_id_list.append(json_str['id'])
return tweet_id_list
def get_bearer_token():
uri_token_endpoint = 'https://api.twitter.com/oauth2/token'
key_secret = f"{consumer_key}:{consumer_secret}".encode('ascii')
b64_encoded_key = base64.b64encode(key_secret)
b64_encoded_key = b64_encoded_key.decode('ascii')
auth_headers = {
'Authorization': 'Basic {}'.format(b64_encoded_key),
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
}
auth_data = {
'grant_type': 'client_credentials'
}
auth_resp = requests.post(uri_token_endpoint, headers=auth_headers, data=auth_data)
print(auth_resp.status_code)
bearer_token = auth_resp.json()['access_token']
return bearer_token
bearer_token = get_bearer_token()
bearer_header = {
'Accept-Encoding': 'gzip',
'Authorization': 'Bearer {}'.format(bearer_token),
'oauth_consumer_key': consumer_key
}
recent_tweets = get_tweet_ids()
engage_data = {
'tweet_id_list': recent_tweets,
'engagement_types': ['impressions', 'engagements', 'favorites'],
'groupings': {'grouping name': {'group_by': ['tweet.id', 'engagement.type']}}
}
uri_28hr_endpoint = 'https://data-api.twitter.com/insights/engagement/28hr'
engagement_resp = requests.post(uri_28hr_endpoint, headers=bearer_header, data=engage_data)
print(engagement_resp.status_code)
print(engagement_resp.json())
Run Code Online (Sandbox Code Playgroud)
当我打电话时print(engagement_resp.json())
,得到以下输出:
403 {'errors':['您的应用程序ID未获得授权。']}
答案就在安迪·派博的评论中。Twitter 开发者网站的该页面顶部写着:
这是仅在我们的托管访问级别内可用的企业 API。要使用此API,您必须首先在我们的企业销售团队建立一个帐户
在此页面上描述了不同级别的 API 访问权限,您可以了解标准(免费)、高级和企业 API 层中的功能。
归档时间: |
|
查看次数: |
44 次 |
最近记录: |