TwitterにてAPIを使用して自動ツイートするのにハマったので備忘録
はじめに
お久しぶりの投稿です。
YouTubeの投稿を細々始めていまして、アップロードしたら自動ツイートしたいなぁという思いからAPIを触ったところ、タイトル通りハマったので備忘録として投稿します。
Twitter APIの申請
下記リンクにアクセスし、自分のアカウントにログインします。
右上のDeveloper Portalをクリックします。
初めてのアクセスの場合、いくつか質問があります。
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をクリックすると利用規約の画面に遷移します。
Accept Terms & ConditionsにチェックをしてSubmitをクリックします。
上記メールが届いたら、Confirm your emailをクリックします。
App name(一意でなくてはいけない。あとで変更可能)を入力し、Get keysをクリックします。
キーが発行されるのでコピーして管理しておきます。(パスワード同様秘密にしておく必要がある)
Skip to dashboardをクリックして、Dashboardに遷移します。
Access Token、Access Token Secret取得
DashboardでPROJECT APPの鍵をクリックします。
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("テスト")
しかし、下記エラーとなってしまいうまくいかず・・・
原因
エラーの内容を要約すると、「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="テスト")
しかし、またしてもエラー・・・
原因2
今回の原因は認証権限がありませんとのこと。。。
検索しているとある設定が漏れていることに気が付く!
DashboardでPROJECT APPの歯車をクリックします。
User authentication settingsがSet upになっていると思いますので、クリックします。
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の鍵をクリックします。
Access Token and SecretがCreated with Read and Write permissions(Created with Read and Write and Direct message permissions)になっていることを確認します。
もしも、なっていなければRegenerateをします。
再度実行!
無事ツイートされました!
まとめ
APIの申請だけでいけると思ってましたが、考えが甘く、うまくいかなかったため、備忘も込めて記載させていただきました。
わかりづらい部分があるかと思いますが、同じように困っている人の助けになれば幸いです。
私が躓いた点は以下2点でしたので、ぜひ参考にしてください。
申請区分によって使用できるAPIが違うこと
APIを使用するためには設定が必要なこと
今後はAPIを駆使して色々試してみるぞー!
この記事が気に入ったらサポートをしてみませんか?