Twitterで書いていたように、「NextScripts: Social Networks Auto-Poster」でエラーが出て、Blogからの自動投稿ができなくなっていた。
とりあえず解決できたので、その備忘録。
エラーメッセージには、
=ERROR=- Array ( [headers] => Requests_Utility_CaseInsensitiveDictionary Object ( [data:protected] => Array ( Thu, 11 Aug 2022 12:22:11 +0000 => Fri, 29 Jul 2022 04:09:41 GMT [content-type] => text/html; charset=UTF-8 [cf-cache-status] => DYNAMIC [expect-ct] => max-age=604800, report-uri=”https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct” [server] => cloudflare [cf-ray] => 73230022292b8a62-NRT ) ) [body] => Error: Sorry, the URL you entered is on our internal blacklist. It may have been used abusively in the past, or it may link to another URL redirection service. [response] => Array ( => 400 [message] => Bad Request )
と、出ていた。
メッセージ中の「Error: Sorry, the URL you entered is on our internal blacklist. It may have been used abusively in the past, or it may link to another URL redirection service.」とは、
「エラーが発生しました。申し訳ございませんが、入力されたURLは弊社内のブラックリストに掲載されています。過去に悪用された可能性があり、また他のURLリダイレクトサービスにリンクしている可能性があります。」
ということなのだが、心当たりがないし意味不明(>_<)
エラーコード400は、「クライアントの要求に何らかの誤りや問題があり処理を完了できなかったことを示すもの」とのこと。
Twitterの「Developer Portal」を確認すると、「User authentication settings」の中の、
「Callback URI / Redirect URL」が空欄になっていたので、自サイトのURLを入れた。……のだが、それでも解決しなかった。
API Key and SecretやAccess Token and Secretを再発行してみたが、それでも解決しなかった。
う〜〜む……、以前は問題なかったのに、先週の投稿分から機能しなくなったので、Twitterの仕様が変わったのではないかと思った。
そこで、新たにAPIを作成してみた。
以前は、STANDALONE APPSだったのだが、Projectとして作成した。
すると、今度は違うエラーメッセージが出てきた。
-=ERROR=- Array ( [pgID] => [isPosted] => 0 [pDate] => 2022-07-29 03:49:51 [Error] => | Resp: {"title":"Forbidden","detail":"Forbidden","type":"about:blank","status":403}
403エラーは、「ページが存在するものの、特定のアクセス者にページを表示する権限が付与されず、アクセスが拒否されたことを示すもの」ということ。
アクセス権だって?
そんな設定はどこにあるんだ?
Twitter APIのFAQを参照すると……
アカウント取得apiの403エラー
簡単にご説明しますと、弊社のdeveloper potalのUI上 (https://developer.twitter.com/ 1 , 各アプリの
Keys and Tokens
) からもtokenを"Regenerate"操作することが可能なのですが、そこでRegenerateしても新たなtokenへ今回追加したら新しいApp permissionが付与されないため、引き続きエラーとなる報告が多数寄せられています。今回新しくアプリへの権限を追加したことにより、ユーザから"明示的"に新しいパーミッションへの許可を取る必要があるため、developer potalのUI上からのRegenerateでは期待通りの動作となりません。そのため、前述の投稿で案内しているように、通常の 3-legged-OAuth 認証プロセス (例: Sign In With Twitter 17) によってtokenの再取得をお願いいたします。
わかったような、わからないような……。
認証プロセスを変えて、tokenの再取得をしても変化なし。
がぁぁーー、わからん。
新たに作ったProject APIの設定を見ていたら、User authentication settingsの中に、
と、「OAuth 1.0a」をONにすると、Permissionの設定が出てきた。
それを「Read and write」にして、テストしたら……
投稿できた(^o^)
STANDALONE APPSのAPIは使えないままだが、とりあえずProject APIで使えるようになったから、解決としよう。
最近の投稿できない問題は、公式が解決策を出してくれていましたよ
https://www.nextscripts.com/known-issues/
情報ありがとうございます。