見出し画像

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

    1. Callback URI / Redirect URL → 自分のアプリのURL(https://twitter.com/でも問題ない)

    2. 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を駆使して色々試してみるぞー!

この記事が気に入ったらサポートをしてみませんか?