WordPressのアフィリエイトプラグイン「Rinker」で楽天市場の商品を検索しても、商品が一件も出てこない――。
私も同じ症状で数時間ハマりました。「APIキーは間違ってないはず」「楽天のAPIテストページでは同じキーワードでちゃんと検索できるのに」と、原因が分からず途方に暮れていました。
結論から言うと、原因はRinkerのバグではなく、楽天アプリ側の「許可されたWebサイト」の登録ミスである可能性が高いです。
まずはこれを試してみてください。
まずこれを試してください(1分で終わります)
- 楽天ウェブサービスにログインし、使っているアプリの編集画面を開く
- サイト右上の「アプリ情報の確認」を押す
- 「詳細を見る」から「許可されたWebサイト」という項目を確認する
- ここが
example.comのように www なし で登録されていないか確認する - もしサイトのURLが
https://www.example.com/のように www あり なら、許可されたWebサイトもwww.example.comに書き換えて保存する - Rinkerで商品検索をやり直す
私の場合、これで検索結果がすぐに表示されるようになりました。逆に、サイトがwwwなしのURLで運用されているのに楽天側がwwwありで登録されている場合も、同じように実際のURLへ合わせてください。
なぜこれで直るのか
楽天APIは、リクエストの送信元(Referer)が「許可されたWebサイト」に登録した内容と一致しているかをチェックしています。
wwwのあり・なしは人間から見ると「同じサイト」に見えても、システム的には別物として扱われることがあります。Rinkerは自分のサイトのURLをそのまま送信するので、ここが1文字でもズレていると、楽天側から「登録されていないサイトからのアクセス」として拒否されてしまいます。
そして楽天のAPIテストフォームは、テストページ自体からのアクセスになるためこの判定に引っかからず、正常に動いてしまいます。これが「テストは成功するのに、自分のサイトだけ検索できない」という分かりにくさの正体でした。
それでも直らない場合
- 許可されたWebサイトの欄に、
*.example.comのようにワイルドカードで登録してみる - アプリケーションURLと実際のサイトのURLが完全に一致しているか、httpsとhttpの違いも含めて見直す
- しばらく時間をおいてから再度試す(楽天側の設定反映に多少タイムラグがあることがあります)
よくある質問
Q. 楽天APIのテストフォームでは検索できるのに、なぜRinkerからだと出てこないのですか?
A. テストフォームはテストページ自体からのアクセスとして扱われるため、Referer制限に引っかかりません。一方Rinkerは自分のサーバーから直接楽天APIを呼び出すため、Refererが「許可されたWebサイト」の登録内容と厳密に照合されます。この違いが原因です。
Q. Rinkerのプラグイン自体を疑って再インストールした方がいいですか?
A. まずは不要です。今回のような症状はRinker側の不具合ではなく、楽天アプリ側の設定に起因するケースがほとんどです。再インストールやコード改修の前に、楽天の管理画面を確認してください。
Q. APIキーやシークレットを間違えているわけではないのに検索できないのはなぜですか?
A. APIキー自体が正しくても、Referer(アクセス元サイトの情報)が楽天側の登録内容と一致していないと検索結果は返ってきません。キーの再発行や再入力を試す前に、まず「許可されたWebサイト」の表記を確認してください。
まとめ
| 症状 | 原因 | 対処 |
|---|---|---|
| Rinkerで商品検索しても何も出ない | 楽天APIテストは成功するのにRinkerからは失敗する | 「許可されたWebサイト」のReferer不一致 |
| APIキーは合っているはずなのに検索できない | www の有無が実際のサイトURLとズレている | 楽天アプリ側の設定を実際のURLに合わせる |
Rinkerのプラグイン自体に問題があるケースは少なく、多くは今回のような楽天アプリ側の設定ミスが原因です。プラグインの再インストールやコード修正を試す前に、まず楽天の管理画面を確認してみてください。
