WordPress新規投稿時に自動でTwitter投稿実装で401 Authorization Required
WordPressで新規に投稿した際に、自動でTwitterの自分のタイムラインにツイートする、という機能をプラグイン無しで実装しました。
参考にさせて頂いたサイトはこちらです。
新しい記事が公開されたことをTwitterにも流して拡散したいというのはよくある話だと思います。僕が今担当しているWebサイトでも、記事を公開したタイミングでTwitterにも流すというフローがあります。 一日一回の作業ということもあ...
さて、TwitterのAPI登録もしたし、試してみようと新規投稿してもツイートはされず。
そこでエラーメッセージを見てみると、
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 UnauthorizedTwitterの開発者ページで確認してみると、 「App permissions」が「Read」 となっていました。
これを 「Read and Write」 に変更して保存。
さぁ、これでどうだと試してみるもやはりダメ。
どうしたら良いのか対処法を探していたところ、次の記事が目に止まりました。
なぜか2番目のコードを実行すると401エラーが出ます。キー&トークンは間違いなくtwitterに入ってるので、1番目のコードはエラーなく実行できます。 ---試した事---callback_urlに適当にURLを貼った。---権限--- #------------------------
記事中のコメントに
その場合「トークンを振り出したアカウントからみてアプリのアクセス権」は変わらないはずなのでトークンを取り直してみてください。そもそも「アカウントから見たアプリのアクセス権」は確認しているのでしょうか? (考えてみてください。ユーザが最初読み取り専用だと思ってアプリにアクセス権を与えて、アプリ側があとから"Read and write"に権限変更したらトークンの権限も勝手に変わってました、なんてありえないでしょう?)
TwitterAPI error:401の解決方法が知りたい|teratailと。
つまり、 「App permissions」を変更したら、アクセストークンも再取得せよ 、とのこと。
早速アクセストークンを再取得して試してみたところ、無事にツイートできました。
WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。
コメントをどうぞ