WordPress新規投稿時に自動でTwitter投稿実装で401 Authorization Required

作成日:

WordPressで新規に投稿した際に、自動でTwitterの自分のタイムラインにツイートする、という機能をプラグイン無しで実装しました。

参考にさせて頂いたサイトはこちらです。

favicon
【WordPress】プラグインを使わずに投稿を公開するタイミングで自動でTwitterにもツイートする - Qiita https://qiita.com/hituziando/items/4421ee31a5b74a4ad0a0

新しい記事が公開されたことをTwitterにも流して拡散したいというのはよくある話だと思います。僕が今担当しているWebサイトでも、記事を公開したタイミングでTwitterにも流すというフローがあります。 一日一回の作業ということもあ...

さて、TwitterのAPI登録もしたし、試してみようと新規投稿してもツイートはされず。

そこでエラーメッセージを見てみると、

Text
PHP Warning:  file_get_contents(https://api.twitter.com/1.1/statuses/update.json): failed to open stream: HTTP request failed! HTTP/1.0 401 Authorization Required

とありました。

これは、APIキーは登録してるけど、ツイートする資格は無いよ、と言っているようです。

HTTP 401 Unauthorized は、有効な認証資格が不足していることによりリクエストが適用されないことを示すクライアントエラーのレスポンスコードです。

401 Unauthorized

Twitterの開発者ページで確認してみると、 「App permissions」が「Read」 となっていました。

これを 「Read and Write」 に変更して保存。

App permissions
App permissions

さぁ、これでどうだと試してみるもやはりダメ。

どうしたら良いのか対処法を探していたところ、次の記事が目に止まりました。

favicon
TwitterAPI error:401の解決方法が知りたい|teratail https://teratail.com/questions/279701

なぜか2番目のコードを実行すると401エラーが出ます。キー&トークンは間違いなくtwitterに入ってるので、1番目のコードはエラーなく実行できます。 ---試した事---callback_urlに適当にURLを貼った。---権限--- #------------------------

記事中のコメントに

その場合「トークンを振り出したアカウントからみてアプリのアクセス権」は変わらないはずなのでトークンを取り直してみてください。そもそも「アカウントから見たアプリのアクセス権」は確認しているのでしょうか? (考えてみてください。ユーザが最初読み取り専用だと思ってアプリにアクセス権を与えて、アプリ側があとから"Read and write"に権限変更したらトークンの権限も勝手に変わってました、なんてありえないでしょう?)

TwitterAPI error:401の解決方法が知りたい|teratail

と。

つまり、 「App permissions」を変更したら、アクセストークンも再取得せよ 、とのこと。

早速アクセストークンを再取得して試してみたところ、無事にツイートできました。

物草 灸太郎
物草 灸太郎

WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。

Loading...

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。