0
1

More than 1 year has passed since last update.

tweepyでツイート情報を取得したいのにエラーが出る

Last updated at Posted at 2023-01-01

はじめに

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に変更します。
スクリーンショット 2023-01-01 17.11.08.png

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でツイート情報を取得_ツイートデータの収集方法

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1