APIを使用して店舗情報を取得する際の401 Unauthorizedエラー
スマレジのAPIを使って店舗情報を取得しようとしていますが、401 Unauthorizedエラーが発生して困っています。以下に現在の状況と試したことをまとめましたので、ご助言いただけますと幸いです。
【現在の状況】
1. アクセストークンの取得は成功しています(200 OK)。
2. 店舗情報の取得時に401 Unauthorizedエラーが発生します。
【使用しているエンドポイント】
- トークン取得:https://id.smaregi.dev/app/{contractId}/token
- 店舗情報取得:https://api.smaregi.dev/api/v2/pos/stores
【リクエストの詳細】
- HTTPメソッド:GET
- ヘッダー:
- Authorization: Bearer {access_token}
- Accept: application/json
- Content-Type: application/json
- X-Contract-Id: {contract_id}
【エラーメッセージ】
{
"type": "https://api.smaregi.jp/problems/oauth2/access_denied",
"title": "Access Denied",
"status": 401,
"error": "access_denied",
"error_description": "The resource owner or authorization server denied the request.",
"detail": "The resource owner or authorization server denied the request."
}
【確認済みの事項】
1. アクセストークンは正しく取得できており、有効期限内です。
2. スコープは 'pos.stores:read' を使用しています。
3. X-Contract-Id ヘッダーにはサンドボックス環境の契約IDを設定しています。
4. 開発者ポータルでアプリケーションに必要な権限を付与しています。
【質問】
1. 上記の設定で問題ないでしょうか?見落としている点はありますか?
2. サンドボックス環境で特別に必要な設定はありますか?
3. 401エラーの詳細な原因を特定するための追加のデバッグ方法はありますか?
4. このエラーが発生する他の一般的な理由はありますか?
答え
@YuheiW
ご記載いただいた店舗一覧取得APIのエンドポイントが、仕様書の内容と異なっております。
サンドボックス環境での店舗一覧取得APIは、以下のエンドポイントとなります。
https://api.smaregi.dev/{契約ID}/pos/stores
エンドポイントの「api/v2」と指定されている箇所を、契約IDに変更していただきますようお願いいたします。
店舗一覧取得APIのエンドポイントについては、下記仕様書の右画面にある「get/stores」クリックいただくとご確認をいただけます。
【店舗一覧取得API仕様書】
https://www1.smaregi.dev/apidoc/#operation/getStores
こちら無事に解決しました。ありがとうございます。