RinkerのAmazon商品検索が使えない?コード修正で直す方法とポチップ移行のすすめ

WordPressのアフィリエイトプラグイン「Rinker」で、Amazon商品の検索が急に使えなくなる不具合が報告されています。

広告
目次

原因はCreators APIの仕様

Rinker ver1.13.0の商品リンク作成画面で「Amazonから商品検索」で検索しても結果が返ってこない、「401:AmazonAPIのステータスエラー: {“message”:”The authentication token is invalid or malformed”,”reason”:”InvalidToken”,”type”:”UnauthorizedException”} AmazonAPIのステータスエラー」といったエラーになる場合、原因の多くはAmazon Creators APIへの対応が古くなっていることにあります。

Amazon側で認証トークンの取得方法が変わったにもかかわらずRinkerが以前の古いエンドポイントとリクエスト形式のまま通信しているため、トークンの取得に失敗して検索が動かなくなる、という流れです。

つまりプラグイン本体が新しい仕様に追随できていない状態で、設定を見直すだけでは直りません。

広告

コード修正で解決する方法

この不具合は、Rinker本体のPHPファイルを1か所書き換えることで解消できます。

編集するのは「yyi_rinker_main.php」というファイルで、トークン取得を行っている get_json_from_amazon_creator_api の処理部分です。行数の目安は2280行目付近になります。

まずは修正前のコードです。

$curl = curl_init();
$auth_creds = $creator_auth_id . ':' . $creator_secret_key;
$headers = [
    'Content-Type: application/x-www-form-urlencoded',
    'Authorization: Basic ' . base64_encode($auth_creds),
];
curl_setopt($curl, CURLOPT_URL, 'https://creatorsapi.auth.us-west-2.amazoncognito.com/oauth2/token');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, 'grant_type=client_credentials&scope=creatorsapi/default');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

これを次の内容に置き換えます。

$curl = curl_init();
$headers = [
    'Content-Type: application/json',
];
$token_payload = json_encode([
    'grant_type'    => 'client_credentials',
    'client_id'     => $creator_auth_id,
    'client_secret' => $creator_secret_key,
    'scope'         => 'creatorsapi::default',
]);
curl_setopt($curl, CURLOPT_URL, 'https://api.amazon.co.jp/auth/o2/token');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $token_payload);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

編集後はファイルを保存し、Rinkerの管理画面から改めてAmazonの商品検索を試すと結果が返ってくるようになります。

プラグイン本体を直接書き換えるため、作業の前にファイルのバックアップを取っておくと安心です。

なお、そもそもクリエイターAPIを使える条件を満たしていないアカウントの場合は、この修正をしても弾かれてしまいます。

ポチップ移行のほうが楽

コード修正で当面はしのげますが、Rinkerは現在不定期更新の状態になっているようです。

今回のように仕様変更へ本体が追随しきれないと、そのつど自分でコードを直す必要が出てきます。

長い目で見るなら、更新が続いている「ポチップ」へ乗り換えるほうが楽でしょう。

Rinkerからポチップへは移行ツールも用意されているため、既存の商品リンクを引き継ぎながら切り替えられます。

今後もメンテナンスの負担を減らしたい方は、この機会に移行を検討してみるのもよさそうです。

デザイン的にもRinkerとポチップはほぼ同じ見た目にできますし、大きな違和感は出ないと思います。

広告

まとめ

RinkerでAmazon商品検索が使えない不具合はCreators APIへの対応が古いことが主な原因で、コードを書き換えれば解消できます。

ただしRinker自体が不定期更新になっている以上、根本的な安心感を求めるなら更新の続くポチップへ移行するのが現実的な選択肢です。

まずはコード修正で急場をしのぎ、余裕があるタイミングで移行を進める、という進め方がおすすめです。

  • URLをコピーしました!
  • URLをコピーしました!
目次