Skip to Content
ガイドOAuth Token取得

OAuth Token 取得

API Credential を使用して OAuth トークンを取得する手順を説明します。

概要

VeriCerts Zero API を利用するには、まず OAuth トークンを取得する必要があります。API Credential(Client ID と Client Secret)を使用してトークンエンドポイントにリクエストを送信し、アクセストークンを取得します。

前提条件

  • API Credential を発行済みであること(API Credential 発行
  • Client ID と Client Secret を取得済みであること

トークン取得の流れ

Client ID + Client Secret → Token Endpoint → Access Token → API 呼び出し

API 仕様

エンドポイント

https://zero-engine-stg.vericerts.io/v1/auth/token

リクエスト

メソッド: POST

ヘッダー:

ヘッダー
Content-Typeapplication/json

リクエストボディ:

{ "grant_type": "client_credentials", "client_id": "cli_xxxxxxxxxxxxx", "client_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }
パラメータ必須説明
grant_typestring固定値: client_credentials
client_idstring発行された Client ID
client_secretstring発行された Client Secret

レスポンス

成功時(200 OK):

{ "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 3600 }
フィールド説明
access_tokenstringAPI 呼び出しに使用するトークン
token_typestringトークンタイプ(固定: Bearer
expires_innumber有効期限(秒)。デフォルト 3600 秒(1時間)

エラー時(401 Unauthorized):

{ "error": "invalid_client", "error_description": "Invalid client credentials" }

サンプルコード

Postman

Postman を使用してトークンを取得する例です。

Postman でのトークン取得

cURL

curl -X POST "${VERICERTS_API_URL}/v1/auth/token" \ -H "Content-Type: application/json" \ -d '{ "grant_type": "client_credentials", "client_id": "cli_xxxxxxxxxxxxx", "client_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }'

JavaScript (Node.js)

const response = await fetch(`${VERICERTS_API_URL}/v1/auth/token`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ grant_type: 'client_credentials', client_id: process.env.VERICERTS_CLIENT_ID, client_secret: process.env.VERICERTS_CLIENT_SECRET, }), }); const { access_token, expires_in } = await response.json(); console.log(`Token expires in ${expires_in} seconds`);

Python

import requests import os response = requests.post( f"{os.environ['VERICERTS_API_URL']}/v1/auth/token", json={ "grant_type": "client_credentials", "client_id": os.environ["VERICERTS_CLIENT_ID"], "client_secret": os.environ["VERICERTS_CLIENT_SECRET"], }, ) data = response.json() access_token = data["access_token"] expires_in = data["expires_in"] print(f"Token expires in {expires_in} seconds")

トークンの使用方法

取得したアクセストークンは、API リクエストの Authorization ヘッダーに設定して使用します。

curl -X GET "${VERICERTS_API_URL}/v1/..." \ -H "Authorization: Bearer {access_token}"

トークンの有効期限

項目
有効期限3600 秒(1時間)
更新方法新しいトークンを取得

Note: トークンが期限切れになった場合は、再度トークン取得 API を呼び出して新しいトークンを取得してください。リフレッシュトークンはサポートしていません。

トークン管理のベストプラクティス

トークンのキャッシュ

トークンは有効期限内であれば再利用できます。毎回のAPI呼び出しで新しいトークンを取得する必要はありません。

// 推奨: トークンをキャッシュして再利用 let cachedToken = null; let tokenExpiry = null; async function getAccessToken() { // キャッシュされたトークンが有効な場合は再利用 if (cachedToken && tokenExpiry > Date.now()) { return cachedToken; } // 新しいトークンを取得 const response = await fetch(`${API_URL}/v1/auth/token`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ grant_type: 'client_credentials', client_id: CLIENT_ID, client_secret: CLIENT_SECRET, }), }); const { access_token, expires_in } = await response.json(); // キャッシュを更新(余裕を持って期限を設定) cachedToken = access_token; tokenExpiry = Date.now() + (expires_in - 60) * 1000; // 1分前に期限切れ扱い return cachedToken; }

エラーハンドリング

トークン取得に失敗した場合のエラーハンドリングを実装してください。

async function getAccessToken() { try { const response = await fetch(`${API_URL}/v1/auth/token`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ grant_type: 'client_credentials', client_id: CLIENT_ID, client_secret: CLIENT_SECRET, }), }); if (!response.ok) { const error = await response.json(); throw new Error(`Token error: ${error.error_description}`); } return await response.json(); } catch (error) { console.error('Failed to get access token:', error); throw error; } }

エラーコード一覧

エラーコード説明対処法
invalid_clientClient ID または Client Secret が無効認証情報を確認
invalid_grantgrant_type が無効client_credentials を指定
server_errorサーバーエラーしばらく待ってから再試行

次のステップ

トークンを取得したら、API を使用して VC を発行できます。

関連ガイド

Last updated on