コンテンツにスキップ

OAuth トークン発行

Hive サーバー API を呼び出す際の認可検証と安全な認証に必要な OAuth トークンを発行します。 「OAuth トークンの発行」API は、OAuth 2.0 クライアント資格情報付与標準に従い、アプリサーバーが Hive 認証サーバーを直接呼び出すサーバー間認証フローとして動作します。 「OAuthトークン発行」APIには以下の特徴があります。 - クライアントIDとシークレットのみを使用してトークンを発行します ・アクセストークンのみ発行(リフレッシュトークンは発行されません) - 1時間(3600秒)有効

Note

クライアント ID とクライアント シークレットの発行については、セキュリティキー設定 を参照してください。


リクエスト URL

本番URL https://auth.qpyou.cn/oauth/token
サンドボックス URL https://sandbox-auth.qpyou.cn/oauth/token
HTTP メソッド POST
Content-Type application/json
データ形式 JSON

## リクエストヘッダー
フィールド名 説明
--- ---
ISCRYPT データが暗号化されているかどうか (0 = 暗号化されていない、常に 0 を渡します)

## リクエスト本文
フィールド名 説明
--- ---
appid アプリID
grant_type client_credentials に修正
client_id クライアント ID (App Center で発行)
client_secret クライアント シークレット (App Center で発行)

## リクエストの例
### curl
curl -X POST https://auth.qpyou.cn/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
    "grant_type": "client_credentials",
    "client_id": "project_abc123",
    "client_secret": "secret_xyz789"
  }'

{
  "appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
  "grant_type": "client_credentials",
  "client_id": "project_abc123",
  "client_secret": "secret_xyz789"
}


レスポンスボディ

フィールド名 説明 タイプ
result_code レスポンスコード、0=成功 Integer
result_msg 結果メッセージ String
data 応答データ Object
data.access_token JWT アクセス トークン String

レスポンスコード

コード値 説明
0 成功
4000 無効なパラメーター (必須パラメーターが欠落しているか、無効な形式)
4001 クライアント認証に失敗しました (client_id または client_secret の不一致)
4002 サポートされていないgrant_type
4003 認証に失敗しました(権限がありません)
5000 内部サーバーエラー


応答例

{
  "result_code": 0,
  "result_msg": "SUCCESS",
  "data": {
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InByb2plY3RfYWJjMTIzIn0.eyJwcm9qZWN0X2lkIjoiY29tLmNvbTJ1cy5leGFtcGxlIiwidG9rZW5fdHlwZSI6ImFjY2Vzc190b2tlbiIsImdyYW50X3R5cGUiOiJwcm9qZWN0IiwiaWF0IjoxNzE1NTg0MDAwLCJleHAiOjE3MTU1ODc2MDAsImF1dGhfdmVyIjoidjQiLCJ1c2VyX2lkIjoiIiwiaXNfd2hpdGVsaXN0Ijp0cnVlfQ.signature"
  }
}

エラー応答の例

{
  "result_code": 4001,
  "result_msg": "INVALID_CLIENT",
  "data": null
}


トークンの使用方法

Hive サーバー API を呼び出すときに、発行されたアクセス トークンを HTTP ヘッダーに含めます。

JWT トークン構造

発行されるアクセス トークンは JWT (JSON Web Token) 形式であり、ピリオド (.) で区切られたヘッダー、ペイロード、署名の 3 つの部分で構成されます。

ヘッダー

フィールド 説明
子供 クライアントID クライアント識別子 (JWT 検証に使用)
アルゴリズム RS256 署名アルゴリズム (RSA SHA-256)
タイプ JWT トークンの種類
#### ペイロード
フィールド 説明
--- ---
grant_type プロジェクト (client_credentials メソッド)
経験 有効期限 (発行後 1 時間)
イアット 発行時間
token_type アクセストークン
Tip

サーバーは公開キーを使用して JWT 署名を検証します。ヘッダーの kid フィールドは、どのクライアントのトークンであるかを識別します。

ヘッダー設定

ヘッダー名 説明
X-Access-Token JWT アクセス トークン 発行されたOAuthアクセストークン
### 使用例
curl -X POST https://auth.qpyou.cn/v2/game/player/get-idp \
  -H "Content-Type: application/json" \
  -H "X-Access-Token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InByb2plY3RfYWJjMTIzIn0..." \
  -H "ISCRYPT: 0" \
  -d '{
    "appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
    "player_id": 123456789
  }'
Note

Hive サーバー API を呼び出すときは、発行された JWT アクセス トークンを X-Access-Token ヘッダーに含めます。トークンが見つからないか期限切れの場合、認証エラーが発生します。


JWT トークン検証エラー

Hive サーバー API で JWT トークンの検証が失敗した場合、詳細なエラー情報が token_validation フィールドを通じて提供されます。

token_validation フィールド

このフィールドには、JWT 検証エラー情報が含まれます。 | フィールド名 | 説明 | タイプ | | --- | --- | --- | | token_validation | JWT 検証の詳細 | Object | | token_validation.result_code | JWT 検証結果コード 詳細 | Integer | | token_validation.result_msg | JWT検証結果メッセージ | String | ???+ note- JWT検証が成功した場合:token_validation.result_code: 0 - JWT検証が失敗した場合:token_validation.result_codeで詳細なエラーコードが返されます。 - このフィールドは、Hive サーバー API によって一般的に使用されます。

エラー応答の例

顧客情報がありません

"token_validation": {
  "result_code": 2400,
  "result_msg": "No client information found."
}

トークンがありません

"token_validation": {
  "result_code": 2406,
  "result_msg": "The access token is missing."
}

トークン署名エラー

"token_validation": {
  "result_code": 2407,
  "result_msg": "Invalid token signature."
}

期限切れのトークン

"token_validation": {
  "result_code": 2408,
  "result_msg": "The access token is expired. Please refresh your token."
}

JWT 検証エラー コード

コード値 説明 解決策
2400 顧客情報がありません JWT ヘッダーの kid が無効です。クライアントIDを確認してください。
2405 トークン形式エラー JWT形式が無効です。トークンを再発行します。
2406 トークンがありません X-Access-Token ヘッダーがありません。トークンを発行し、ヘッダーに含めます。
2407 トークン署名エラー JWT 署名の検証に失敗しました。正しいトークンを使用していることを確認してください。
2408 期限切れのトークン アクセス トークンの有効期限が切れています (1 時間)。新しいトークンを再発行します。
2409 トークンはまだ有効ではありません JWT は nbf (Not Before) 時間より前です。システム時間を確認してください。
2410 付与タイプの不一致 要求されたgrant_typeは、JWTのgrant_typeとは異なります。
2411 ユーザー ID の不一致 要求された player_id は、JWT の user_id と異なります (ユーザー トークンを使用する場合)。
2412 付与タイプの不一致 JWT の Grant_type は「user」ではありません。ゲーム クライアントのログインが成功した後に返されたユーザー トークンを使用します。
### 通常の応答
JWT 検証が成功した場合:
"token_validation": {
  "result_code": 0,
  "result_msg": "success"
}
Note

Hive サーバー API には、成功または失敗に関係なく、すべての応答に token_validation フィールドが含まれます。


トークンの更新

リフレッシュ トークンは、クライアント クレデンシャル付与では発行されません。

トークンの有効期限の処理

  1. アクセス トークンの有効期限が切れます (発行後 1 時間)。
  2. API の呼び出し時に JWT 検証が失敗する (token_validation.result_code: 2408)
  3. /oauth/token API を呼び出して、新しいアクセス トークンを再発行します。
Note

アクセス トークンの有効期限が切れたら、同じクライアント ID とクライアント シークレットを使用して新しいトークンを再発行する必要があります。リフレッシュトークンは提供されないため、初回発行と同様にトークンを再発行してください。

推奨されるトークンの再利用

アクセス トークンは、有効期限が切れるまで再利用できます。 推奨事項: - 推奨: 発行されたトークンをキャッシュし、有効期限が切れるまで再利用します。 - 非推奨: API 呼び出しごとに新しいトークンを発行する

Tip

ゲームサーバーの起動時またはトークンの有効期限が切れたときにのみトークンを再発行することで、パフォーマンスを最適化します。不要なトークンの発行はサーバーの負荷を増加させます。


セキュリティに関する推奨事項

クライアント シークレットの管理

クライアント シークレットは機密情報であるため、安全に管理する必要があります。 | アイテム | 説明 | | --- | --- | | 決して公開しないでください |クライアント シークレットをクライアント (アプリ/ウェブ) に決して公開しないでください。 | | サーバーのみ |ゲームサーバー上でのみ使用します(サーバー間通信) | | 安全なストレージ |環境変数または安全なストレージ (Vault) に保存します。 |

Warning

クライアント シークレットが公開されると、攻撃者がゲーム サーバーになりすましてすべてのプレイヤー情報にアクセスできるようになります。

HTTPSが必要です

OAuth トークンを発行して API を呼び出すときは、HTTPS を使用する必要があります。 - 推奨: https://auth.qpyou.cn/oauth/token - 禁止: http:// の使用 (中間者攻撃に対して脆弱)