はじめに
Twitter API V2を使ってツイート情報を収集しようとしたが、ハマってしまったのでまとめてみました。
ソースコード
調べたらすぐ出てくるようなコードです。
import tweepy
consumer_key = 'xxxxxx'
consumer_secret = 'xxxxxx'
access_token = 'xxxxxx'
access_token_secret = 'xxxxxx'
client = tweepy.Client(
consumer_key,
consumer_secret,
access_token,
access_token_secret
)
search = 'Python'
tweet_max = 10
tweets = client.search_recent_tweets(query=search, max_results=tweet_max)
print(tweets)
エラー内容
tweepy.errors.Unauthorized: 401 Unauthorized
Unauthorized
何かしらの権限を与えないといけないというエラーなので、調べてみるとTwitterの開発者ポータルでApp permissionsがread onlyのままが原因のようでした。
Developer Portalに飛んで、左側のProjects&Appsのアプリ名を選択します。そして、User authentication set upのset up、もしくはEditを押してapp permissionsを変えて行きます。
app permissionsをReadからRead and writeかRead and write and Direct messageに変更します。
App permissionsを変更したら、再びconsumer_key、consumer_secret、Access Token、Access Token Secretを発行するようにします。
これで完了のはずなのですが、結局また同じエラーが出てしまいました。
(App permissinsでThese permissions enable OAuth 1.0a Authenticationと書かれていたので、もしかして)
解決
どうやらTwitter API V2では、bearer_tokenの情報も必要なようです。
そこで先ほどのDeveloper Portalからbearer_tokenも取得してきました。
import tweepy
bearer_token = 'xxxxxx'
consumer_key = 'xxxxxx'
consumer_secret = 'xxxxxx'
access_token = 'xxxxxx'
access_token_secret = 'xxxxxx'
client = tweepy.Client(
bearer_token,
consumer_key,
consumer_secret,
access_token,
access_token_secret
)
search = 'Python'
tweet_max = 10
tweets = client.search_recent_tweets(query=search, max_results=tweet_max)
print(tweets)
他にも、以下のようにしてツイートを投稿することもできました。
client.create_tweet(text='ツイート文')
参考サイト
TWITTER API V2 REFERENCE Clinet
【112日目】Tweepyでツイート情報を取得_ツイートデータの収集方法