スマレジ・デベロッパーズ・コミュニティはアーカイブされました。


これまでに投稿いただいた内容は引き続きご覧いただけます。

今後のお問い合わせはこちら

トークンについて

BenBen
カテゴリ: POS

メッセージを以下のように送信しました。

POST /app/sb_skc551e5/token HTTP/1.1

Host: id.smaregi.dev

Authorization: bbe71c49ea412034decfc757e458f47d

Content-Type: application/x-www-form-urlencoded

Content-Length: 98


grant_type=client_credentials&scope=pos.products%3Aread&client_id=bbe71c49ea412034decfc757e458f47d

これはどこ間違っていますか。

よろしくお願いいたします。

ベストアンサー

  • May 2021 編集されました 回答済み✓

    @Ben

    根本的な問題というのは、アプリアクセストークンを取得したいですが、ネイティブアプリにはクライアントシークレットがないです。クライアントシークレット抜きで得られるのも、ユーザーアクセストークンだけと思います。

    区分がネイティブアプリのとき、アプリアクセストークンは利用できません。

    アプリアクセストークンはサーバーなどの秘匿性の高いアプリケーションでのみ利用することができます。


    なので、もし開発中のネイティブアプリが、ご自身のサーバーにアクセスして利用するようなアプリであるなら、区分をWEBアプリにし、サーバーサイドでAPIを実行することで対応することができます。(あくまでも例です。参考までにどうぞ。)


    このような回答でよろしいでしょうか?

    他に疑問点があればコメントしてくださいませ。

答え

  • @Ben

    クライアントIDの設定方法が間違っています。

    詳細は既に別のスレッドにありますので、こちらをご確認ください。


  • BenBen
    April 2021 編集されました

    @スマレジ保坂

    回答を確認して、クライアントシークレットを持っている状況のようですが。

    クライアントシークレット持ってない場合はどうすればいいですか。

  • April 2021 編集されました

    @Ben

    こちらをご確認ください。

    クライアントシークレットが無いときなので、ユーザーアクセストークンのことかと思います。

    Basic {Base64文字列}

    Base64文字列には、クライアントIDとクライアントシークレット(なければ省略)を

    コロン(:)で結合してBase64エンコードしたものを指定。

    とあります。

    なので、クライアントシークレットがない場合は省略してください。

  • BenBen
    April 2021 編集されました

    @スマレジ保坂

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

    前回の質問でアップロードした図を確認してください。

    その時は既にクライアントシークレットを省略しました。しかしレスポンスは400です。

    つまりAPI仕様書の通り、クライアントシークレットを省略したが、トークンが得られないという疑問です。


    更に事情を説明します。API仕様書を見って、「アクセストークン」の手順に従って、アプリアクセストークンを取得してから、次の「リクエスト」に進められるという認識は正しいかと思います。しかし、「ログインβ」のところに記載されているユーザーアクセストークンを見る限り、ユーザー情報を取得するためのトークンかと思います。そのために「アクセストークン」の手順でやってきて、必要されるのはアプリアクセストークンになります。

    ちなみに、今はネイティブアプリとして登録したので、クライアントシークレットはもってない状態です。

    根本的な問題というのは、アプリアクセストークンを取得したいですが、ネイティブアプリにはクライアントシークレットがないです。クライアントシークレット抜きで得られるのも、ユーザーアクセストークンだけと思います。


    以上は現段階の理解になります。

    もし理解に間違いがありましたら、指摘をよろしくお願いいたします。

  • 了解しました。

    回答いただき有難うございました。