使用 Twitter API - 如何使用不记名令牌获得参与端点的身份验证

2024-01-13

我正在尝试为营销仪表板获取我公司推文的参与度数据。我能够使用 Tweepy 进行身份验证以获取基本的 Twitter 源数据,但参与端点给我带来了麻烦。我是否有可能通过使用 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())

当我打电话时print(engagement_resp.json())我得到以下输出:

403 {'errors': ['您的应用程序 ID 未获授权。']}


答案就在安迪·派博的评论中。在顶端Twitter 开发者网站上的此页面 https://developer.twitter.com/en/docs/metrics/get-tweet-engagement/overview它说:

这是仅在我们的托管访问级别内可用的企业 API。要使用此API,您必须首先在我们的企业销售团队建立一个帐户

On 此页面描述了不同级别的 API 访问 https://developer.twitter.com/en/pricing您可以了解标准(免费)、高级和企业 API 层的功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Twitter API - 如何使用不记名令牌获得参与端点的身份验证 的相关文章

随机推荐