TwitterAPIでのエラー一覧

Twitter botのつくり方

組んでいる途中で400やら403、404が出てきたので

公式からのメモです。

エラーコードと応答 - Twitter 開発者ドキュメント 日本語訳
このサイトではTwitter開発者ドキュメントの日本語訳を公開しています。Twitter API やTwitter Cardなど、Twitterでの開発に役立つ様々な情報が記載されています。

頻出エラー400,403,404の概要

400認証エラーで出る
403リクエストはいいけど成り立たない
たとえば既にフォローしてる人にフォローリクエストとか
404URLのミスや指定のIDが見つからない
destroyでID指定すると見つからなかったりする

HTTP ステータスコード

エラーコードと応答 - Twitter 開発者ドキュメント 日本語訳
このサイトではTwitter開発者ドキュメントの日本語訳を公開しています。Twitter API やTwitter Cardなど、Twitterでの開発に役立つ様々な情報が記載されています。

こちらからの転記です。

The Twitter API では、全てのリクエストに対して適切なHTTP ステータスコードを返すようにしています。

コードテキスト説明
200OK成功!
304Not Modified新たなデータは取得されませんでした。
400Bad Requestこのリクエストは無効、もしくはサポートされていません。付随するエラーメッセージで詳細な説明がされています。 API v1.1では、認証をしていないリクエストは無効と見なされ、この応答が返ってきます。
401Unauthorized認証資格情報 が不足しているか、正しくありません。
またそれ以外の場合でも、例えばAPI v1エンドポイントへリクエストを送信した場合は現在では全て401 を返すようになっています (代わりに API v1.1 を使ってください)。
403Forbiddenリクエストの形式は問題ありませんが、それが拒否されたかアクセスが認められていません。付随するエラーメッセージで理由を説明しています。 このコードは、更新制限が原因でリクエストが拒否された場合に使用されます。
404Not FoundリクエストしたURLが無効か、ユーザー情報などのリクエストしたリソースが存在しません。またリクエストした形式が、リクエスト対象のメソッドでサポートされていない場合も返されます。
406Not Acceptableリクエストで不正な形式が設定されていた場合に、検索APIによって返されます。
410Goneこのリソースは廃止されています。APIエンドポイントが停止していることを示すために使われます。例えば: “Twitter REST API v1 はもうすぐ機能停止します。 API v1.1へ移行してください。”
420Enhance Your Calm速度制限に引っかかった場合に、検索APIとトレンドAPI バージョン1によって返されます。
422Unprocessable EntityPOST account / update_profile_bannerへアップロードされた画像を処理することができない場合に返ります。
429Too Many RequestsAPI v1.1で、リソースごとに決められたアプリケーションの速度制限を使い果たしたためにリクエストが処理できなかった場合に返されます。API v1.1 の速度制限を参照してください。
500Internal Server Error何かが破損しています。開発者フォーラムへ報告をお願いします。そうすれば Twitter のチームで調査が可能です。
502Bad GatewayTwitter がダウンしているか、更新作業中です。
503Service UnavailableTwitter のサーバは起動していますが、リクエストが多すぎる状態です。時間を置いて再試行してください。
504Gateway timeoutTwitter サーバは起動していますが、スタック内でなんらかの障害が発生したためリクエストを処理できませんでした。時間を置いて再試行してください。

付随するエラーメッセージの確認方法

twitter.get(user_url,params=params)

でリクエストを飛ばしたりするかと思いますけど

res = twitter.get(user_url,params=params)
res.text

こうやって中身を覗いてあげると

'{"errors":[{"parameters":{"id":[":id"]},"message":"The `id` query parameter value [:id] does not match ^[0-9]{1,19}$"},{"parameters":{"XXXXXXXXXX":[""]},"message":"The query parameter [XXXXXXXXXX] is not one of [id,expansions,tweet.fields,user.fields]"}],"title":"Invalid Request","detail":"One or more parameters to your request was invalid.","type":"https://api.twitter.com/2/problems/invalid-request"}'

こんな感じで見られます。