0
0

More than 1 year has passed since last update.

TweepyでApp permissionsの設定をRead-and-Writeに変更したのに"Read-only application cannot POST"というエラーが表示される件について(2022/10/16現在)

Posted at

TwitterAPIを利用して投稿することのできるTwitterのBotを作成しようとしていたところ、以下の様なエラーが発生しましたが、ネットにはあまり有益な情報がなかったので記事を書きました。

発生したエラー:401 Unauthorized Read-only application cannot POST.
エラー内容:読み取り専用のアプリケーションでは投稿することはできません 

結論:「読み取り専用」から「読み書き両様」に変更した設定を反映させるためには、keyとtokenを更新・再作成して新しくしたものを使用する必要がある。
原因:更新前のkeyとtokenを使用した場合、設定が反映されない

前提条件:OS -> Windows
     Pythonでtweepyというライブラリを使用している
     Twitterの開発者(Developer)用アカウントを登録している

投稿などの機能を追加したい場合は、「読み取り専用(Read-only)」でなく「読み書き可(Read-and-Write)」へ設定を変更する必要があります。
Read-onlyからRead-and-Writeへ設定を変更する方法は、以下の外部ブログ記事を参考にしてください(他の記事を参考にしていただいてもかまいません)。
https://classynode.com/2022/08/myfirst_twitterapi/

Read-onlyからRead-and-Writeへ設定を変更しても同様のエラーが表示されたので、何が足りないのか確かめたところ、keyとtokenを更新して、新しく作成したkeyとtokenを使う必要があるということが分かりました。
Twitterの開発者用のページ(Twitter Developer Portal)の自分のアプリの設定画面から"keys and tokens"というkeyとtokenを変更できるページがありますので、そこから各項目で"Regenerate"(再作成)を選択し、新しく作り直したkeyとtokenを利用してプログラムを書き換えましょう。

参考コード

####################################################
import tweepy

#XXXのところへ、新しく更新したkeyとtokenを入力します
API_KEY="XXX"
API_KEY_SECRET="XXX"
BEARER_TOKEN="XXX"
ACCESSS_TOKEN="XXX"
ACCESS_TOKEN_SECRET="XXX"

auth = tweepy.OAuthHandler(API_KEY,API_KEY_SECRET)
auth.set_access_token(ACCESS_TOKEN,ACCESS_TOKEN_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)

user = api.get_user(screen_name="Twitterアカウント名(@は除く)")
message = "Read-onlyからRead-and-Writeへ設定を変更しました"
api.update_status(message)
####################################################
0
0
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
0