トークンについて
メッセージを以下のように送信しました。
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
これはどこ間違っていますか。
よろしくお願いいたします。
ベストアンサー
-
根本的な問題というのは、アプリアクセストークンを取得したいですが、ネイティブアプリにはクライアントシークレットがないです。クライアントシークレット抜きで得られるのも、ユーザーアクセストークンだけと思います。
区分がネイティブアプリのとき、アプリアクセストークンは利用できません。
アプリアクセストークンはサーバーなどの秘匿性の高いアプリケーションでのみ利用することができます。
なので、もし開発中のネイティブアプリが、ご自身のサーバーにアクセスして利用するようなアプリであるなら、区分をWEBアプリにし、サーバーサイドでAPIを実行することで対応することができます。(あくまでも例です。参考までにどうぞ。)
このような回答でよろしいでしょうか?
他に疑問点があればコメントしてくださいませ。
答え
@Ben
クライアントIDの設定方法が間違っています。
詳細は既に別のスレッドにありますので、こちらをご確認ください。
@スマレジ保坂
回答を確認して、クライアントシークレットを持っている状況のようですが。
クライアントシークレット持ってない場合はどうすればいいですか。
@Ben
こちらをご確認ください。
クライアントシークレットが無いときなので、ユーザーアクセストークンのことかと思います。
Basic {Base64文字列}
Base64文字列には、クライアントIDとクライアントシークレット(なければ省略)を
コロン(
:
)で結合してBase64エンコードしたものを指定。とあります。
なので、クライアントシークレットがない場合は省略してください。
@スマレジ保坂
回答いただきありがとうございます。
前回の質問でアップロードした図を確認してください。
その時は既にクライアントシークレットを省略しました。しかしレスポンスは400です。
つまりAPI仕様書の通り、クライアントシークレットを省略したが、トークンが得られないという疑問です。
更に事情を説明します。API仕様書を見って、「アクセストークン」の手順に従って、アプリアクセストークンを取得してから、次の「リクエスト」に進められるという認識は正しいかと思います。しかし、「ログインβ」のところに記載されているユーザーアクセストークンを見る限り、ユーザー情報を取得するためのトークンかと思います。そのために「アクセストークン」の手順でやってきて、必要されるのはアプリアクセストークンになります。
ちなみに、今はネイティブアプリとして登録したので、クライアントシークレットはもってない状態です。
根本的な問題というのは、アプリアクセストークンを取得したいですが、ネイティブアプリにはクライアントシークレットがないです。クライアントシークレット抜きで得られるのも、ユーザーアクセストークンだけと思います。
以上は現段階の理解になります。
もし理解に間違いがありましたら、指摘をよろしくお願いいたします。
了解しました。
回答いただき有難うございました。