![見出し画像](https://assets.st-note.com/production/uploads/images/92182025/rectangle_large_type_2_1e023e7559ba039753f32e42038329d7.png?width=1200)
TwitterにてAPIを使用して自動ツイートするのにハマったので備忘録
はじめに
お久しぶりの投稿です。
YouTubeの投稿を細々始めていまして、アップロードしたら自動ツイートしたいなぁという思いからAPIを触ったところ、タイトル通りハマったので備忘録として投稿します。
Twitter APIの申請
下記リンクにアクセスし、自分のアカウントにログインします。
右上のDeveloper Portalをクリックします。
![](https://assets.st-note.com/img/1667665975688-MHF5PGMeFX.png?width=1200)
初めてのアクセスの場合、いくつか質問があります。
![](https://assets.st-note.com/img/1667666051140-x7i2TcveDc.png?width=1200)
What country are you based in?(住んでいる国) → Japanを選択
What's your use case?(使用目的) → Building tools for twitter users(Twitterユーザー向けのツールの構築)を選択
Will you make Twitter content or derived information available to a government entity or a government affiliated entity?(ツイッターコンテンツの分析結果、派生情報などを政府機関に提供するかどうか) → Noを選択
Get involved and updated → チェックを入れても入れなくても良い
質問に回答後、Let's do thisをクリックすると利用規約の画面に遷移します。
![](https://assets.st-note.com/img/1667667175561-LwovDvU7kb.png?width=1200)
Accept Terms & ConditionsにチェックをしてSubmitをクリックします。
![](https://assets.st-note.com/img/1667667446106-D57SJhmebn.png?width=1200)
上記メールが届いたら、Confirm your emailをクリックします。
![](https://assets.st-note.com/img/1667667624890-Q9vLouQbKc.png?width=1200)
App name(一意でなくてはいけない。あとで変更可能)を入力し、Get keysをクリックします。
![](https://assets.st-note.com/img/1667667812333-ewr8rmNB8c.png?width=1200)
キーが発行されるのでコピーして管理しておきます。(パスワード同様秘密にしておく必要がある)
Skip to dashboardをクリックして、Dashboardに遷移します。
Access Token、Access Token Secret取得
![](https://assets.st-note.com/img/1667668478623-3lEOzBtHm2.png?width=1200)
DashboardでPROJECT APPの鍵をクリックします。
![](https://assets.st-note.com/img/1667670942551-8zprVAesDW.png?width=1200)
Access Token and SecretがGenerateになっていると思いますので、クリックすると、Access Token、Access Token Secretが発行されるのでコピーして管理しておきます。(パスワード同様秘密にしておく必要がある)
いざツイート!
pythonのライブラリであるtweepyを使用してテストツイートをしてみようかと以下のようなコードを実行してみる。
import tweepy
# Twitter APIの認証設定
# 取得したキーを格納
api_key = "api_key"
api_secret = "api_secret"
access_key = "access_key"
access_secret = "access_secret"
# auth認証
# インスタンスの作成
auth = tweepy.OAuthHandler(api_key, api_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
# テストツイートのメッセージを作成し送信
api.update_status("テスト")
しかし、下記エラーとなってしまいうまくいかず・・・
![](https://assets.st-note.com/img/1667671611640-6xrvUwbGb6.png?width=1200)
原因
エラーの内容を要約すると、「EssentialではTwiter API V2しか使用できないため、このAPIを使用したいなら、Elevated申請することが必要」とのこと。
そのため、tweepy.API()ではなくtweepy.Client()を使用することにする。(ただし、tweepy V4.0.0以上が必要)
そして、ソースを下記のように修正して実行!
import tweepy
# Twitter APIの認証設定
# 取得したキーを格納
api_key = "api_key"
api_secret = "api_secret"
access_key = "access_key"
access_secret = "access_secret"
# Tweepy設定
# インスタンスの作成
client = tweepy.Client(consumer_key=api_key, consumer_secret=api_secret, access_token=access_key, access_token_secret=access_secret) # オブジェクト設定
client.create_tweet(text="テスト")
しかし、またしてもエラー・・・
![](https://assets.st-note.com/img/1667672102113-0Os77tG5hI.png?width=1200)
原因2
今回の原因は認証権限がありませんとのこと。。。
検索しているとある設定が漏れていることに気が付く!
![](https://assets.st-note.com/img/1667668147898-IUtSKodUDo.png?width=1200)
DashboardでPROJECT APPの歯車をクリックします。
![](https://assets.st-note.com/img/1667672448375-azf1V3jrpq.png?width=1200)
User authentication settingsがSet upになっていると思いますので、クリックします。
![](https://assets.st-note.com/img/1667672860500-cyjePo8Rwg.png?width=1200)
App permissionsがデフォルトReadになっているためツイートできませんでした。
ツイートするためには以下のように設定する必要があります。
App permissions → Read and writeまたはRead and write and Direct message
Type of App → Web App, Automated App or Bot
App info
Callback URI / Redirect URL → 自分のアプリのURL(https://twitter.com/でも問題ない)
Website URL → 自分のアプリのURL(https://twitter.com/でも問題ない)
次のページに遷移するとキーが再発行されます。
そして、DashboardでPROJECT APPの鍵をクリックします。
![](https://assets.st-note.com/img/1667673491232-noIAh376WW.png?width=1200)
Access Token and SecretがCreated with Read and Write permissions(Created with Read and Write and Direct message permissions)になっていることを確認します。
もしも、なっていなければRegenerateをします。
再度実行!
無事ツイートされました!
![](https://assets.st-note.com/img/1667673790973-5jDKwG0tbK.png?width=1200)
まとめ
APIの申請だけでいけると思ってましたが、考えが甘く、うまくいかなかったため、備忘も込めて記載させていただきました。
わかりづらい部分があるかと思いますが、同じように困っている人の助けになれば幸いです。
私が躓いた点は以下2点でしたので、ぜひ参考にしてください。
申請区分によって使用できるAPIが違うこと
APIを使用するためには設定が必要なこと
今後はAPIを駆使して色々試してみるぞー!