「RinkerでAmazonの商品が検索できない」「401 InvalidToken が出る」「楽天の検索も止まった」で調べて来られた方に、先に結論を書きます。
- 401(InvalidToken)は、Rinker 1.13.0 が、いまのAmazonの認証情報(日本は3.3)に合わない場所へ、トークンを取りに行っているのが原因です。Rinkerのファイルを十数行直すと消えます。
- 直すと、次に403(AssociateNotEligible)が出ることがあります。これはプログラムではなく、アマゾンの利用条件です。直近30日の売上が10件に届くまで、APIは使えません。
- 楽天の検索が「IchibaItem/Search/20170706 is under maintenance」で止まるのは、楽天の古いAPIが終わったからです。新しいアプリを作って、アクセスキーをRinkerに入れると戻ります。
私はRinkerを10年ほど使っています。5年ほど前から、使えたり使えなくなったりをくり返し、そのたびにポチップやWPアソシエイトポスト R2も試しました。どちらも、常用できる使いやすさではなく、Rinkerに戻ってきました。今回も解説記事を読んで直そうとして、直せずに投げていました。AI(Claude)と一緒に原因を切り分けて、ようやくたどり着いたのが、この記事の直し方です。
この記事は、2026年10月31日に、Rinker 1.13.0(公式の最新版)で直した記録です。
1. エラー別:原因と直し方
| エラー | 原因 | 直せるか |
|---|---|---|
| Amazon:401 | トークンの取り方が古い | コードの修正で直る(2章) |
| Amazon:403 | 直近30日の売上が10件未満 | コードでは直らない(3章) |
| 楽天:maintenance | 楽天の古いAPIの終了 | 新しいアプリで直る(4章) |
2. 401 InvalidToken の直し方(Rinker 1.13.0)
Rinkerの「商品情報を取得」でAmazonを検索すると、次のエラーが出る場合です。
【エラー】401:AmazonAPIのステータスエラー: {"message":"The authentication token is invalid or malformed","reason":"InvalidToken","type":"UnauthorizedException"} AmazonAPIのステータスエラー
2-1. 原因
Amazonの商品情報を取るAPIは、PA-API 5.0から、Creators APIに変わりました。Creators APIでは、まず認証情報(認証情報IDとシークレット)でアクセストークンを取り、そのトークンを付けて商品を検索します。
認証情報には「バージョン」があり、日本のストアで作ると3.3になります。アマゾンの公式の説明では、3.3のトークンは https://api.amazon.co.jp/auth/o2/token に、JSONで取りに行く決まりです。
ところが、Rinker 1.13.0 は、トークンを別の場所(creatorsapi.auth.us-west-2.amazoncognito.com)に、別の形で取りに行くように書かれています。そのため、設定が正しくてもトークンが取れず、空のトークンで検索して401になります。設定画面のバージョン欄に「v3.3」と入れても「3.3」と入れても、結果は同じです(Rinkerは、先頭のvを消して使います)。
公式の更新は、1.12.0(2026年1月)でCreators APIに対応し、1.13.0(2026年5月)で楽天の新しいAPIに対応しました。2026年10月31日の時点で、Amazonの3.3の取り方には、まだ対応していません。
2-2. 直す前に確かめること
- 設定 > Rinker設定で、Amazonが「Creators API優先」になっていて、認証情報ID・シークレット・バージョン(3.3)が入っていること。
- 直すファイルは
wp-content/plugins/yyi-rinker/yyi_rinker_main.phpです。 - 先に、元のファイルの控えを取ります。私は、エックスサーバーのファイルマネージャーで元のファイルをコピーし、公開フォルダの外に置いてから直しました。
- WordPressのプラグインの編集画面が出ない人は、wp-config.php の
DISALLOW_FILE_EDITで止めてある状態です。私のサイトもそうです。この守りは外さずに、サーバーのファイルマネージャーかFTPで直してください。
2-3. 書き換える場所
関数 get_json_from_amazon_creator_api の中の、トークンを取りに行く部分です。1.13.0では、2287〜2296行目のあたりにあります。元のコードは、次のとおりです。
$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);
これを、次のコードに置き換えます。認証情報のバージョンが3.1・3.2・3.3のときは新しい取り方、それ以外のときは元の取り方のままにしてあります。
// Creators API 3.x の認証情報は、Login with Amazon でトークンを取る(JSON で送る)
$lwa_token_urls = [
'3.1' => 'https://api.amazon.com/auth/o2/token',
'3.2' => 'https://api.amazon.co.uk/auth/o2/token',
'3.3' => 'https://api.amazon.co.jp/auth/o2/token',
];
if ( isset( $lwa_token_urls[ $creator_version ] ) ) {
$headers = [
'Content-Type: application/json',
];
curl_setopt($curl, CURLOPT_URL, $lwa_token_urls[ $creator_version ]);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode([
'grant_type' => 'client_credentials',
'client_id' => $creator_auth_id,
'client_secret' => $creator_secret_key,
'scope' => 'creatorsapi::default',
]));
} else {
$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);
2-4. 保存したあと
- 保存したら、すぐにトップページと記事のページを開いて、表示されることを確かめます。PHPの書き間違いがあると、サイト全体が表示されなくなります。そのときは、控えを元の名前に戻します。
- 設定 > Rinker設定で「変更を保存」を一度押します。Rinkerが覚えているトークンが消えて、次の検索で取り直します。
- 商品リンクの「商品情報を取得」で、Amazonを検索します。401が出なければ、直っています。
Rinkerを更新すると、このファイルは上書きされます。更新したら、一度Amazonの検索を試してください。401が戻っていたら、同じ修正をやり直します。
3. 直したら、403 AssociateNotEligible に変わった
私の場合、401が消えた直後に、次のエラーに変わりました。
【エラー】403:AmazonAPIのステータスエラー: {"message":"Your account does not currently meet the eligibility requirements.","reason":"AssociateNotEligible","type":"AccessDeniedException"} AmazonAPIのステータスエラー
これはプログラムの問題ではありません。アマゾンの公式のエラーの説明では、Creators APIを使うには、直近30日で、条件を満たす売上が10件必要です。トークンは取れているのに、アカウントが条件を満たしていない、という意味です。
私の数字を出します。2026年10月1日〜30日のアソシエイトの数字は、クリック175、注文5件、紹介料399円でした。過去12か月の紹介料は、合計で約9,000円です。10件に届いていないので、APIは使わせてもらえません。
これを直せるプラグインはありません。10件に届くまでのあいだは、楽天の検索で箱を作ります(4章・5章)。私は、本の記事の箱を見直して、10件を目指しているところです。
4. 楽天の検索を、新しいAPIに切り替える
Rinkerの「楽天市場から商品検索」で、次のエラーが出る場合です。
【エラー】楽天ウェブサービスメンテナンス中です。IchibaItem/Search/20170706 is under maintenance service_unavailable
楽天の古いAPIは終わっています。Rinkerの公式のリリース履歴でも、1.13.0で楽天の新しいAPIに対応し、2026年5月14日以降は新しいAPIで使う必要がある、と案内されています。私のRinkerには、古いアプリIDだけが入っていて、新しいAPIに要る「アクセスキー」と「アプリケーションURL」が空でした。
4-1. Rakuten Developers でアプリを作る
Rakuten Developers(楽天ウェブサービス)に楽天IDでログインし、「New App」(アプリID発行)から作ります。私がつまずいたところも書いておきます。
- Application name:英数字だけ(例:mysiterinker)。私は「h9nfp-rinker」とハイフンを入れて、「Application name must not contain special characters」で弾かれました。
- Application URL:https://(自分のドメイン)
- Application type:Web Application
- Allowed websites:自分のドメイン(https:// も、最後の / も付けない)
- Application description:空でもかまいません。私はここに利用目的を書いてしまい、下の必須の欄が空のままになっていました。
- Purpose of data usage:必須。例:ブログの記事に、商品リンクを表示するため
- Expected QPS:1(空のままだとエラーになります)
- API Access Scopes:Rakuten Ichiba API にチェック
- CAPTCHA:画像の文字を入れて、「Agree to the terms of service」を押す
4-2. Rinkerに入れる
設定 > Rinker設定の楽天の欄に、次の3つを入れて「変更を保存」を押します。アフィリエイトIDは、そのままで大丈夫です。
- アプリケーションID:新しく作ったアプリのもの(古いIDが入っていたら差し替える)
- アクセスキー:新しく作ったアプリのもの
- アプリケーションURL:https://(自分のドメイン)
「楽天市場から商品検索」で商品が出れば、成功です。
5. 楽天で作った箱に、Amazonの商品ページへのボタンを付ける
楽天の検索から作った商品リンクでは、Amazonのボタンは「キーワード検索」のリンクになります。本なら、Amazonの商品ページへ直接飛ばせます。
- 「ASIN」の欄に、紙の本のISBN-10を入れる(紙の本のASINは、ISBN-10と同じです)。
- 「Amazon商品詳細URL」の欄に、
https://www.amazon.co.jp/dp/(ISBN-10)?tag=(自分のトラッキングID)を入れる。
ISBN-13しか分からないときは、先頭の978を外した9桁に、最後の1桁(チェックディジット)を付け直したものがISBN-10です。
画像は、楽天の商品画像が入ります。アマゾンの商品画像は、APIか、アマゾンが用意しているリンク作成の道具で取ったもの以外は使えない決まりなので、手で貼るのはやめました。
6. それでも、私がRinkerを使い続ける理由
10年使って、いちばん使いやすいからです。迷わず、まっすぐ使えます。ポチップとWPアソシエイトポスト R2も試しましたが、どちらも、常用できる使いやすさではありませんでした。
公式の更新は、楽天の新しいAPIには対応しましたが、Amazonの3.3には、まだ対応していません。次の更新で直るかもしれませんし、別のところが壊れるかもしれません。私は、壊れたらAIと一緒に原因を切り分けて直す、と決めています。今回の直し方も、そうやって見つけたものです。
このブログは、エックスサーバーとWordPressで運営しています。選んだ理由は「エックスサーバーとWordPressを選ぶ理由」に、テーマのことは「Cocoon完全ガイド」に、ブログのサービスの選び方は「ブログはどこがいい?」に書きました。
よくある質問
401と403は、何が違いますか?
401は、トークンが取れていない状態です。Rinkerのトークンの取り方の問題なので、2章の修正で直ります。403(AssociateNotEligible)は、トークンは取れているのに、アカウントが条件(直近30日で売上10件)を満たしていない状態です。コードでは直りません。
認証情報のバージョンは「v3.3」と「3.3」のどちらを入れますか?
アマゾンの表記は「3.3」です。Rinker 1.13.0 は先頭のvを消して使うので、どちらを入れても動きは同じです。
プラグインの編集画面が出ません。
wp-config.php の DISALLOW_FILE_EDIT で、管理画面からのファイル編集が止められている状態です。乗っ取られたときに、管理画面からコードを書き換えられないようにする守りなので、外さずに、サーバーのファイルマネージャーかFTPで直してください。
ポチップに乗り換えたほうがいいですか?
乗り換えるのも手です。ポチップは、WordPress.orgの更新履歴で、Creators APIの3.3と日本向けの取り方に対応した版が出ています。私は、使いやすさでRinkerを残しました。
Rinkerを更新すると、直した部分はどうなりますか?
上書きされて、元に戻ります。更新したら、Amazonの検索を一度試して、401が戻っていたら2章をやり直してください。
出典
- Amazon アソシエイト Creators API「Understanding Versions」(認証情報のバージョン:日本を含むFEは3.3)
- Amazon アソシエイト Creators API「Using cURL」(地域ごとのトークンの取得先。3.3は api.amazon.co.jp/auth/o2/token)
- Amazon アソシエイト Creators API「Error Codes and Messages」(AssociateNotEligible:直近30日で条件を満たす売上10件)
- Rinker公式サイト「Rinkerリリース履歴」(1.12.0:Creator API対応、1.13.0:楽天新API対応・2026年5月14日以降)
- 楽天ウェブサービス「楽天市場商品検索API」(新しいAPI:applicationId と accessKey)
- WordPress.org「ポチップ」の更新履歴(Amazon Creators API 3.3対応)
