Python TwitterAPIを使って投稿する手順書

1. https://developer.twitter.com/ja/docs/twitter-api

2. 登録を押す 

3 . 認証画面に遷移するので、APIを使いたいアカウントでログインする

4. 有料をめっちゃ進めてくるので一番下に小さく案内のある"Sign up for Free Account"をクリックする

5. 利用目的を聞かれるので回答する

6. Dashboard画面に遷移する


7. PROJECT APPの歯車をクリック

8. Projects & Apps画面に遷移するので、画面下の”User authentication settings"のEditをクリックする

9. APIを使って投稿したいのならApp permissionsをRead and writeもしくはRead and write and Direct messageに変更する

10. Type of AppをWeb App, Automated App or Botにする

11. App infoにcallback URI/ Redirect URLを設定する※繋がればなんでもいいらしい

12. Projects & Apps(手順8.の画面)上部のKeys and tokensをクリック

13. Consumer Keys,Authentication Tokens,OAuth 2.0 Client ID and Client SecretをRegenerateする


!!!!!!!!!!!!!!!!!!!!!!!!!!!
手順9,10,11(App permissions)に関連するものを変更した場合は必ずRegenerateしないとダメです。
!!!!!!!!!!!!!!!!!!!!!!!!!!

といっても、全部する必要はないっぽいAccessToken and Secretだけで大丈夫そう。※私はわからなかったからとりあえず全部Regenerateしました。
Regenerateしたらパスワードが出るのでメモ忘れず!メモし忘れたら再度Regenerate!
Regenarateを押したら真っ白な画面になり何も表示されないことが2回ほどあった。
キャッシュかなにかが原因??原因不明、キャッシュクリアとかやれば直るかと。※自分はトイレ行って戻ってきてから再度Regenerateしたらいつの間にか改善しました。

14. Pythonプログラムを書く

tweepyが簡単だったのでtweepyを利用しました。

import tweepy
import configparser

configparser = configparser.ConfigParser()
# 認証情報を設定ファイルから読み込む
configparser.read('config.ini', encoding='utf-8')
consumer_key = configparser["TwitterAPI"]["CONSUMER_KEY"]
consumer_secret = configparser["TwitterAPI"]["CONSUMER_SECRET"]
access_token = configparser["TwitterAPI"]["ACCESS_TOKEN"]
access_token_secret = configparser["TwitterAPI"]["ACCESS_TOKEN_SECRET"]
bearer_token = configparser['TwitterAPI']['BEARER_TOKEN']

# OAuthHandler オブジェクトを作成
client = tweepy.Client(bearer_token=bearer_token,
                          consumer_key=consumer_key,
                          consumer_secret=consumer_secret,
                          access_token=access_token,
                          access_token_secret=access_token_secret)

client.create_tweet(text="Hello World", user_auth=True)


X(旧:Twitter)を確認すると

ツイートできました。


以上

その他GitHubで公式サンプルコードを試す場合はhttps://github.com/twitterdev/Twitter-API-v2-sample-code/blob/main/Manage-Tweets/create_tweet.py

行き詰まったとこ

APIとは関係のない、configparserでエラーが発生していました。
使い慣れていないconfigparserを使ったのが原因です。
以下のようなconfig.iniを作成しました。

[TwitterAPI]
CONSUMER_KEY="AAAAA"
CONSUMER_SECRET="BBBBB"
ACCESS_TOKEN="CCCCC"
ACCESS_TOKEN_SECRET="DDDDD"
BEARER_TOKEN="EEEEE%EEEE%EEEE"
CLIENT_ID="FFFFF"
CLIENT_SECRET="GGGGG"
REDIRECT_URI="HHHHH"

上記の書き方は間違っています。

間違いポイント
1. 文字列を" "で囲む必要はない。これをするとキーが正しく認識されません。
試しに出力すると

"AAAAA"ではなく'"AAAAA"'という文字列になります。キーの文字列正しいのになんで?ってなりました。このエラーというか挙動に気付くまで結構時間がかかりました。

2. %が文字列中に入っているとエラー
これはエラーの出力があるのですぐに解決できました。


以上を踏まえて正しく記述すると

[TwitterAPI]
CONSUMER_KEY=AAAAA
CONSUMER_SECRET=BBBBB
ACCESS_TOKEN=CCCCC
ACCESS_TOKEN_SECRET=DDDDD
BEARER_TOKEN=EEEEE%%EEEE%%EEEE
CLIENT_ID=FFFFF
CLIENT_SECRET=GGGGG
REDIRECT_URI=HHHHH

となります。


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