Insufficient Scopeエラーが発生します。
忙しいどころすみませんが、エラーの原因がわからなくて、質問します。
実装している言語はPHPです。
アクセストークン取得する際のパーラメータ
grant_type=client_credentials&scope=pos.stock%3Aread
アクセストークン取得後のResponse
[scope] =>
[token_type] => Bearer
[expires_in] => 3600
[access_token] => eyJ0eXAiOiJKV1Qi------取得されています。
取得したアクセストークンで在庫一覧取得する際、エラー発生
[type] => https://api.smaregi.jp/problems/oauth2/insufficient_scope
[title] => Insufficient Scope
[scope] => pos.stock:read
アクセストークン取得する際、Scopeが空白のままになっているのが、原因かと思いますが、その認識であっていますか?
他のAPIでは問題ないのになぜか、、在庫一覧取得だけエラーになっているのが、謎です。
※API実行メソッドは共通化してます。
何かわかることがありましたら、教えていただいたら、助かります。
答え
@野間 理恵
仰っていただいている通り、scopeが空になっており正しくアクセストークンを取得できていないご状況です。
「grant_type」「scope」はURLパラメータではなくリクエストボディに指定して、再度アクセストークン取得をお試しいただけますでしょうか。
ご返答ありがとうございます。
リクエストボディに指定してセットしています。
可能性として、
Scope の変数がセットされないのかAPI設定がきいてないことだと思いますが
他のSCOPEは同じ処理で取得ができているので、Scopeがセットされてないことは低いかと思います。
[scope] => waiter.orders:write
[token_type] => Bearer
[expires_in] => 3600
[access_token] => 取得できている
仕様書をみると
「要求できるAPIスコープは、アプリのAPI設定で有効にしたスコープの中から選択できます。
有効ではないスコープを要求しても無視され、存在しないスコープを含む場合はエラーを返します。」
書いているので、API設定が効いてないことも考えますが
設定で
全部利用するにしていますが、
ここの設定があっているのであれば、問題なさそうですが、
それでも取得できていないです。
お手数をおかけいたしますが、何かわかることでありましたら、教えていただきたいです。
すみません。もしここで書いてない権限を使おうしているから、取得できないでしょうか?
@野間 理恵
恐れ入りますが、8/29に添付いただいた画像は「スマレジAPI」の設定のため、今回は関係がない箇所となります。
8/30に添付いただいた画像は現在お客様が利用している「プラットフォームAPI」における、該当アプリが使用できる権限について記載されている画面です。
仰せいただいている通りここで書かれていない権限は該当アプリでスコープが有効になってない状態のため、取得できません。
スコープの設定について、【デベロッパーズ管理画面>該当アプリ>スコープにて「pos.stock:read」がオンになっているか】をご確認ください。
※弊社で公開しているAPIは「スマレジAPI」「プラットフォームAPI」の二種類あります。
スマレジAPIとプラットフォームAPIの違いは以下をご確認ください。
・スマレジAPI(管理画面の設定 > システム連携 > スマレジAPI設定)
https://help.smaregi.jp/hc/ja/articles/224295527
・プラットフォームAPI
https://developers.smaregi.jp/