Twitter API(V1.1 &̴ 2)で401・403エラーが出た時のの解決法

TwitterAPI(V.&̴)で・エラーが出た時のの解決法

所有する複数のTwitterアカウントにツイートなどをするアプリを持っているのですが、少し手を入れたら次々と異なるエラーが発生するようになり、数日奮闘した記憶を留めておきます。

陥った状態

・あるアカウントではツイートできるが、複数の特定アカウントでTwitter APIを投げるとエラーが返ってくる(401エラー)

・テスト用テキストをAPI直打ちでtweetできるが、アプリから自動バッチでtweetできない

目次

解決した方法

基本的ですが、どこが原因でエラーとなっているのかを1つずつ確認してそれぞれ対応しました。

再度OAuthを確認

ある1アカウントでは、単純にOAuth設定が間違っていました。なぜか、Consumer Keyとtokenが逆になってしまっていたので修正したら解決。キー間違えていたら永遠に認証できません…

Twitter Developer申請時期によって使用できるAPIバージョンに制限がある

こちらが重要です。私のアプリは複数Twitterアカウントに対してツイートできるのですが、TwitterアカウントによってDeveloper登録・アプリ登録の時期が1年ほど違います。結論から言うと

・1年ほど前にアプリ登録したアカウント:API v1.1&̴ v2どちらも使える

・最近アプリ登録したアカウント:API v2のみしか使えない?

こんな違いがありそうです。

なぜ判明したのかというと、APIレスポンスを全文コンソールに出してみたところ、以下のような「ご使用のアカウントはV1.1に対応していません」と言うメッセージが表示されていたからです。

You currently have Essential access which includes access to Twitter API v2 endpoints only. If you need access to this endpoint, you’ll need to apply for Elevated access via the Developer Portal. You can learn more here: https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-leve

メッセージ確認後、急いでプログラムを修正し、指定アカウントでTwitterに投稿したい場合はTwitter API v2を使用するように組み替えました。動かしてみると…無事問題解決です。

Tweetしたい文字列によってtweetに失敗するときがある→API v2にしてみる

Twitter API v1.1を使用しているアカウントで、簡単なテキストは無事投稿できるのですが、複雑なテキスト(記号、日本語、改行ありなど)の場合、投稿に失敗してしまいました。

しかも、その時のエラーメッセージはとても不親切で、認証に失敗しました的な文章で問題の特定に時間がかかりました。

"code": 32,
"message": "Could not authenticate you."

上記のエラーでしたが、送信する文字列を少しずつ変えてみたところ、認証の問題ではなくtweetしたい内容に依存してレスポンスが変わることに気づきました。

この時、Twitter API v1.1を使用していました。v1.1のAPIではAPIのパラメータに送信したいメッセージを入れるのですが、v2のAPIでは送信したいメッセージはJsonの中に詰めるという、形の違いがあります。

なんとなく、Jsonに入れたほうがエラーなく送りやすいんじゃない?と思ってAPI v2で送信してみたところ、v1.1 APIで送信に失敗したメッセージをv2 APIでは無事に送信することができました。

エラーステータスやメッセージは鵜呑みにしてはいけないかも

今回、解決に時間がかかった理由は、エラーメッセージが根本的な問題と全然異なっていた、と言うことでした。

エラーメッセージの確認はもちろん重要ですが、しっかり確認したのに解決しない場合は観点を変えてみるとか、外部ソースは最新のバージョンを使用してみるのが良さそうです。

TwitterAPI(V.&̴)で・エラーが出た時のの解決法

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

ピープル大学(UoPeople)でコンピューターサイエンスを学んでいます。趣味はプログラミング。

コメント

コメントする

目次