本APIを呼び出すには、はじめにアクセストークンを取得する必要があります。取得の流れは、OAuth 2.0という標準的な認証の仕組みの中の「クライアント・クレデンシャルズ・グラント」(RFC 6749, 4.4)という方式に沿っています。発行された client_id と client_secret を使ってトークン発行APIを呼び出すだけで取得できます。
この認証は、外部システム(クライアントアプリケーション)そのものを認証するものであり、アプリを利用するエンドユーザー個人を認証するものではない点にご注意ください。
トークンの取得
POST {{APP_URL}}/api/ext/token
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
grant_type |
String | ○ | client_credentials 固定 |
client_id |
String | ○ | 発行されたクライアントID |
client_secret |
String | ○ | 発行されたクライアントシークレット |
curl -X POST "{{APP_URL}}/api/ext/token" \
-d grant_type=client_credentials \
-d client_id={client_id} \
-d client_secret={client_secret}
成功時レスポンス:
{
"access_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"token_type": "Bearer",
"expires_in": 86400,
"scope": null
}
失敗時は 400 Bad Request または 401 Unauthorized などが返却されます。詳細は エラーコード一覧 を参照してください。
トークンの有効期限と再取得
アクセストークンの有効期間は 発行から24時間(86400 秒) です。期限が切れると、そのアクセストークンではAPIを利用できなくなります。
推奨実装パターン:毎リクエストごとにトークンを取得するのではなく、外部システム側でトークンの有効期限を管理し、期限切れのタイミングで再取得する構成を推奨します。トークン発行エンドポイントへの過剰なアクセスは、サーバー負荷の観点からも避けてください。
- 有効期限(
expires_in)を保持し、期限が近づいたら事前に再取得する - もしくは、APIコールが
401 Unauthorizedを返した場合にその場でトークンを再取得してリトライする
いずれの方式でも問題ありませんが、トークン発行APIへの呼び出し頻度は最小限にしてください。
リフレッシュトークンについて
本APIに リフレッシュトークンの機能はありません。トークン取得のレスポンスに refresh_token フィールドが含まれることはなく、アクセストークンの更新は、上記の通り client_credentials グラントによる再取得のみでおこなってください。
scope フィールドについて
scope は常に null が返却されます。本APIにはトークンごとの権限(スコープ)制御の仕組みはなく、発行されたアクセストークンで契約範囲のAPIすべてを利用できます。このフィールドは互換性のために残されているもので、外部システム側で参照する必要はありません。
複数接続元がある場合の client_secret
1つのSKUに対して複数のシステムから本APIに接続する場合、接続元ごとに個別の client_secret を発行します。新しい接続を追加する際は、営業担当までご連絡ください(詳細は はじめに を参照)。
アクセストークンの文字数について
- アクセストークンの文字数は固定ではありません。 発行タイミングによって変動するため、外部システム側でアクセストークンをデータベース等に保存する場合は、固定長のカラムで決め打ちせず、十分な余裕を持った長さ(255文字程度を推奨)で設計してください。 将来的に文字数が変わる可能性もゼロではありません。