目次
初めに
2026年5月を目処に楽天APIの旧ドメインが新しくなるということで、仕様書とにらめっこが始まったのですが、新しいAPIの調査の段階でメンバーから「AccessKeyをヘッダーに含めると商品検索のAPIが実行できない」というメッセージがslack上に流れていました。
まじか。。。と思いながら、調査ログを見つつ自身の環境で試してみたところうまくいかなかったので、その備忘録を書いておきます。同じ現象に遭遇した方の役に立てば幸いです
前提
- 検証環境
- ローカル環境(Mac)
- CURL
やったこと
とりあえず公式ドキュメント通りやってみる
公式ドキュメントには Authorization: Bearer {accessKey} と書かれていたのでその通りにやってみたところメンバーが話して通りうまくいかず、Authorizationを付けているのに「accessKey が無い」と言われます。
リクエスト(検索キーワードは「福袋」)
curl 'https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20220601?applicationId=【登録したアプリケーションID】&keyword=%E7%A6%8F%E8%A2%8B&hits=1'
-H 'Authorization: Bearer xxxxxxxx'
レスポンス
{
"errors": {
"errorCode": 400,
"errorMessage": "accessKey must be present as a query parameter or in the header"
}
}
メッセージ通りにやってみる
メッセージを読み返してみると、「アクセスキー(accessKey)は必須です」と書いてありました。まあよくあるエラーメッセージではありますが、あえてメッセージをそのまま解釈して「accessKey」っていうヘッダーがないとダメなんじゃないのか?と思い立ちやってみた結果・・・
リクエスト
curl 'https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20220601?applicationId=【登録したアプリケーションID】&keyword=%E7%A6%8F%E8%A2%8B&hits=1'
-H "accessKey: 【登録したアクセスキー】'
レスポンス
{
"errors": {
"errorCode": 403,
"errorMessage": "REQUEST_CONTEXT_BODY_HTTP_REFERRER_MISSING"
}
}
お!メッセージが変わった!!
次のメッセージをググってみると、同じように嵌ってる人がいたのでそちらを参考に実行してみたところ・・・
リクエスト
curl 'https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20220601?applicationId=【登録したアプリケーションID】&keyword=%E7%A6%8F%E8%A2%8B&hits=1'
-H "accessKey: 【登録したアクセスキー】'
-H 'Origin: 【登録したアプリケーションURL】'
レスポンス
{
"count": 85814,
"page": 1,
"first": 1,
"last": 1,
"hits": 1,
"carrier": 0,
"pageCount": 100,
"Items": [
{
"Item": {
"itemName": "xxxxxxxxxxxx",
"catchcopy": "xxxxxxxx",
・
・
・
検索できた〜〜〜〜![]()
結論
- Authorizationヘッダーではなく、accessKeyヘッダーをつけましょう
- 楽天の検証用スクラッチパッドとかもクエリパラメータでの実行になってるのでそっちで対応するのが無難
API実装では、ドキュメントの記載と実際の挙動が微妙に異なるケースもあります。
今後変更が入る可能性もあるため、利用時は最新の挙動をご確認ください。 ![]()
参考URL