タイムカードAPIで401エラーが返却される

初めまして、PostManからサンドボックス環境のタイムカードの事業所取得APIを叩くと、

下記の内容がレスポンスされます。

心当たりのあることがあまり浮かばないので皆様のお力をお借りできたらと存じます。

====================

{

    "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."

}

====================


以下、詳細な情報を記載します。

■アクセストークン取得APIのレスポンス

{

  "scope": "timecard.stores:read timecard.staffs:read timecard.shifts:read",

  "token_type": "Bearer",

  "expires_in": 3600,

  "access_token": ""

}


■事業所取得APIのリクエスト

url : https://api.smaregi.dev/user_contract_id/timecard/stores/1

headers : {

Authorization: Bearer アクセストークン

}


■ダッシュボードのスコープの状態

timecard.stores:read: ONになっている

答え

  • @エクサ前田 さま

    サンドボックス環境で、事業所取得APIを試した際に、

    「Access Denied」のエラーが返却されるとのことですね。

    該当のリクエストを弊社の環境で操作したところ問題なくレスポンスが返りました。

    すでにご確認済かもしれないのですが、以下をお試しください。


    ・アクセストークンを再発行しリクエストを行ってリクエストが可能かどうか

    ・うまくいかなかった場合、再発行したアクセストークンで『timecard.staffs:read』『 timecard.shifts:read』も含まれたアクセストークンですので、例えば「従業員取得」を試して正しくレスポンスが返却されるかどうか(問題がアクセストークン側にあるのか、リクエスト側にあるのかの切り分けができればと思います)

  • @スマレジ中谷

    コメントありがとうございます。

    教えていただいた内容を試してみたのですが、

    アクセストークンを再発行しても「事業所取得」「従業員取得」のいずれも、

    掲題の結果となります。


    エラー内容なども一切変化がない状態です。

    ご確認をお願いします。

  • @スマレジ中谷


    お世話になっております。

    現状まだ掲題の内容が発生しており、対応に苦慮しております。

    何かご案内いただける内容などございましたらいただけますと幸いです。

  • @エクサ前田

    中谷に代わり、確認しました。


    アクセストークンを取得しなおしていただいてもうまくいかないとのことですね。

    その場合、詳しく調査させていただきたいので、以下の情報をご教示いただけますでしょうか。

    ※個人情報が含まれているかと思いますので、メールにてお送りください。

    メールアドレス:POS管理画面の右上「?(サポート情報)」画面に記載のメールアドレスにお願いします。


    • 契約ID

    ※管理画面の左上に表示される英数字です。

    • アカウントID
    • ワンタイムパスワード

    ※管理画面右上の白い三本線ボタンをクリックし、「マイアカウント」画面より確認ができます。


    また、postmanをご利用いただいているとのことですので、

    合わせて以下画面のスクリーンショットもお送りいただけますでしょうか。


    <アクセストークン取得API>

    • Authorization タブ
    • Body タブ

    <事業所取得API>

    • Params タブ
    • Authorization タブ
  • September 2021 編集されました

    @スマレジ 東本 @スマレジ中谷

    回答ありがとうございます。

    上記について、解決いたしました。

    私がAPIの仕様書を読み違えておりました。

    申し訳ございません。


    上記解決したところで、新たに疑問が出て参りましたので確認をお願いします。


    今回はGASでのAPI操作についてです。

    GASを用いて、当日勤務したアルバイトの日当をスプレッドシートに入力したいと考えています。

    ですが、アプリユーザーとなるスマレジアカウントのデータを取得しようと、

    本番環境のトークン取得APIを叩いたところ、401で「Access Denied」が返却されてきました。

    このような操作をする場合、アプリユーザー側のアカウントでも何か設定が必要になりますでしょうか。

    ご教授いただけますと幸いです。

  • @エクサ前田

    本番環境で操作を行った際に「Access Denied」になってしまうとのことですね。


    本番環境とは、デベロッパーアカウントのFAQ「本番検証機能」に記載の通り、

    dev_test_developersの契約IDでお試しいただいておりますでしょうか。

    「本番検証機能」とは、サンドボックス環境にて全ての開発・テストが完了したのち、

    リリースした後に本番環境での接続を確認する時に利用できる機能を指します。

    アプリの「本番検証」のメニューから接続切替ができ、

    「接続」状態にすると、スマレジの本番環境のdev_test_developersの契約IDでAPI利用することが可能になります。

    ※この契約と接続するときは、本番用クライアントが発行されている必要があります。

    ※あくまで接続の確認を行うのみであるため、実際の動作を確認することは出来ません。


    もしdev_test_developers以外のアカウントをご利用の場合、

    動作検証はdev_test_developersをご利用いただくようお願いいたします。

    エンドユーザーのアカウントでの操作は、該当のアプリの申請・審査ののち、

    エンドユーザーに公開されたアプリを購入していただいた環境でなければ実行できません。

    本番環境での検証はサーバーの負荷もかかる為、dev_test_developers以外ではお控えいただくようお願いいたします。

  • @スマレジ 東本 @スマレジ中谷

    申し訳ございません、私にて理解できていないところが多いため、下記を要件を満たすためにはどのような手続きが必要か記載いただけると幸いです。


    前提:

    ・現在社内でスマレジ - TimeCardを使用中である

    ・開発用アカウントも別途作成済み

    ・飲食店にてアルバイトがTimeCardを利用し、打刻を行っている


    要件:

    ・アルバイトの日当を計算し、スプレッドシートに出力したい

    ・そのため、TimeCardのAPIを利用し、その日のアルバイトの勤務時間と該当アルバイトの時給を取得したい

    ・計算ロジックは別途こちらで実装する

  • @エクサ前田

    プラットフォームAPIを使って、アプリを開発いただく場合、

    ざっくりと以下のような流れになります。

      ①開発用アカウントを使いプラットフォームアプリを開発する

      ②プラットフォームアプリの申請後、審査を行う

      ③審査が完了後、実店舗の契約IDで該当のアプリを購入する

      ④実店舗のアカウントの情報を取得ができる


    各それぞれの操作に関しては以下のヘルプサイトをご覧ください

    アプリを新規登録するhttps://help.smaregi.jp/hc/ja/articles/360051435193-

    開発アプリの申請から公開https://help.smaregi.jp/hc/ja/articles/360051475193

    アプリの購入と利用料金https://help.smaregi.jp/hc/ja/articles/360051073314 


    したがって、①のアプリの開発が完了していない場合、

    まず開発環境(契約ID:sb_〇〇)にてタイムカード機能(右上の9つの点のマーク)に切り替えていただき従業員や実績の作成を行ってください。

    その後、開発環境の実績や従業員情報を取得できるか検証を行っていただけますでしょうか。


    ※アプリが完成、公開されるまでは実店舗の実績を取得することはできません

  • @スマレジ中谷

    お世話になっております、上記問題解決いたしました。

    ご案内ありがとうございました。