NAV Navbar
Python Java GS2-Formation
 

GS2-Auth

GS2-Auth

GS2-Auth は GS2 内でゲームプレイヤーを特定するための”アクセストークン”を発行するサービスです。

モデル

AccessToken

アクセストークン

ユーザIDを特定する情報が記録された文字列。 GS2内のすべてのサービスで、ゲームアプリケーション内から直接GS2のAPIを呼び出すときには、ユーザIDを指定する代わりにアクセストークンを使用します。 これはユーザIDを直接指定するようにすると、容易に他人に成りすましできてしまうためです。

アクセストークンには発行から1時間の有効期限があり、永続化したアクセストークンを使い回すことは想定していません。

パラメータ データ型 必須 説明
ownerId string true オーナーID
token string true アクセストークン
userId string true ユーザーID
expire long true 有効期限

初期化処理

HTTPプロトコル クライアントの初期化 同期処理

import gs2_core_client.model.*
import gs2_auth_client.rest.*

session = Gs2RestSession(
    region=Region.AP_NORTHEAST_1,
    credential=BasicGs2Credential(
        client_id='your client id',
        client_secret='your client secret',
    ),
)
session.connect()
client = Gs2AuthRestClient(session)
import io.gs2.core.model.Region
import io.gs2.core.model.BasicGs2Credential
import io.gs2.core.rest.Gs2RestSession
import io.gs2.auth.rest.Gs2AuthRestClient

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    )
)
session.connect()
Gs2AuthRestClient client = new Gs2AuthRestClient(session)
初期化処理は不要です

HTTPプロトコル クライアントの初期化 非同期処理

import gs2_core_client.model.*
import gs2_auth_client.rest.*

session = Gs2RestSession(
    region=Region.AP_NORTHEAST_1,
    credential=BasicGs2Credential(
        client_id='your client id',
        client_secret='your client secret',
    ),
)

def complete(result: AsyncResult[None]):
    client = Gs2AuthRestClient(session)

session.connect_async(
    complete,
)
import io.gs2.core.model.Region
import io.gs2.core.model.BasicGs2Credential
import io.gs2.core.rest.Gs2RestSession
import io.gs2.auth.rest.Gs2AuthRestClient

Gs2RestSession session = new Gs2RestSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    )
)

session.connect_async(
    (result) => {
        Gs2AuthRestClient client = new Gs2AuthRestClient(session)
    }
)
初期化処理は不要です

WebSocketプロトコル クライアントの初期化 同期処理

import gs2_core_client.model.*
import gs2_auth_client.web_socket.*

session = Gs2WebSocketSession(
    region=Region.AP_NORTHEAST_1,
    credential=BasicGs2Credential(
        client_id='your client id',
        client_secret='your client secret',
    ),
)
session.connect()
client = Gs2AuthWebSocketClient(session)
import io.gs2.core.model.Region
import io.gs2.core.model.BasicGs2Credential
import io.gs2.core.webSocket.Gs2WebSocketSession
import io.gs2.auth.webSocket.Gs2AuthWebSocketClient

Gs2WebSocketSession session = new Gs2WebSocketSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    )
)

session.connect()
Gs2AuthWebSocketClient client = new Gs2AuthWebSocketClient(session)
初期化処理は不要です

WebSocketプロトコル クライアントの初期化 非同期処理

import gs2_core_client.model.*
import gs2_auth_client.web_socket.*

session = Gs2WebSocketSession(
    region=Region.AP_NORTHEAST_1,
    credential=BasicGs2Credential(
        client_id='your client id',
        client_secret='your client secret',
    ),
)

def complete(result: AsyncResult[None]):
    client = Gs2AuthWebSocketClient(session)

session.connect_async(
    complete,
)
import io.gs2.core.model.Region
import io.gs2.core.model.BasicGs2Credential
import io.gs2.core.webSocket.Gs2WebSocketSession
import io.gs2.auth.webSocket.Gs2AuthWebSocketClient

Gs2WebSocketSession session = new Gs2WebSocketSession(
    Region.AP_NORTHEAST_1,
    new BasicGs2Credential(
        'your client id',
        'your client secret'
    )
)

session.connect_async(
    (result) => {
        Gs2AuthWebSocketClient client = new Gs2AuthWebSocketClient(session)
    }
)
初期化処理は不要です

GS2-Auth は HTTPプロトコル と WebSocketプロトコル の2種類のプロトコルをサポートしています。

HTTPプロトコル と WebSocketプロトコル の違いは以下に示すとおりです。

HTTP WebSocket
接続方式 都度接続 常時接続
応答性能 優れている
API制限 なし 大容量のデータをやりとりするAPIには使用不可(主にマスターデータ系処理)
利用料金 WebSocketと同一 HTTPと同一

終了処理

HTTPプロトコル クライアントの終了処理

session.disconnect()
session.disconnect();
終了処理は不要です

WebSocketプロトコル クライアントの終了処理

session.disconnect()
session.disconnect();
終了処理は不要です

session オブジェクトの切断処理を行って終了処理を行います。 同一 session オブジェクトを複数の異なる Client オブジェクトに渡すことができます。

メソッド

login

同期処理

from gs2_auth_client.request import LoginRequest
from gs2_auth_client.result import LoginResult

result = client.login(
    LoginRequest()\
        .with_user_id('user-0001')
)
# エラー発生時には例外が発生
# result が成功結果が格納
import io.gs2.auth.request.LoginRequest
import io.gs2.auth.result.LoginResult

result = client.login(
    LoginRequest()
        .withUserId("user-0001")
)
// エラー発生時には例外が発生
// result が成功結果が格納
同期APIは実装されていません

非同期処理

from gs2_auth_client.request import LoginRequest
from gs2_auth_client.result import LoginResult

def callback(async_result: AsyncResult[LoginResult]):
    if async_result.error:
        #  エラー発生時には async_result.error に例外が格納
        raise async_result.error
    # async_result.result が成功結果格納

result = client.login_async(
    LoginRequest()\
        .with_user_id('user-0001'),
    callback
)
import io.gs2.auth.request.LoginRequest
import io.gs2.auth.result.LoginResult

result = client.login(
    LoginRequest()
        .withUserId("user-0001"),
    (result) => {
        if (result.getError() != null) {
            // エラー発生時には result.getError() で例外を取得
            throw result.getError()
        }
        // result.getResult() で成功結果を取得
    }
)

GS2-Deploy から利用できません

指定したユーザIDでGS2にログインし、アクセストークンを取得します 本APIは信頼出来るゲームサーバーから呼び出されることを想定しています。 ユーザIDの値の検証処理が存在しないため、クライアントから呼び出すのは不適切です。

パラメータ データ型 必須 説明
userId string true ユーザーID
timeOffset integer false 現在時刻に対する補正値(現在時刻を起点とした秒数)
パラメータ データ型 説明
token string アクセストークン
userId string ユーザーID
expire long 有効期限

loginBySignature

同期処理

from gs2_auth_client.request import LoginBySignatureRequest
from gs2_auth_client.result import LoginBySignatureResult

result = client.login_by_signature(
    LoginBySignatureRequest()\
        .with_user_id('user-0001')\
        .with_key_id('key-0001')\
        .with_body('body')\
        .with_signature('signature')
)
# エラー発生時には例外が発生
# result が成功結果が格納
import io.gs2.auth.request.LoginBySignatureRequest
import io.gs2.auth.result.LoginBySignatureResult

result = client.loginBySignature(
    LoginBySignatureRequest()
        .withUserId("user-0001")
        .withKeyId("key-0001")
        .withBody("body")
        .withSignature("signature")
)
// エラー発生時には例外が発生
// result が成功結果が格納
同期APIは実装されていません

非同期処理

from gs2_auth_client.request import LoginBySignatureRequest
from gs2_auth_client.result import LoginBySignatureResult

def callback(async_result: AsyncResult[LoginBySignatureResult]):
    if async_result.error:
        #  エラー発生時には async_result.error に例外が格納
        raise async_result.error
    # async_result.result が成功結果格納

result = client.login_by_signature_async(
    LoginBySignatureRequest()\
        .with_user_id('user-0001')\
        .with_key_id('key-0001')\
        .with_body('body')\
        .with_signature('signature'),
    callback
)
import io.gs2.auth.request.LoginBySignatureRequest
import io.gs2.auth.result.LoginBySignatureResult

result = client.loginBySignature(
    LoginBySignatureRequest()
        .withUserId("user-0001")
        .withKeyId("key-0001")
        .withBody("body")
        .withSignature("signature"),
    (result) => {
        if (result.getError() != null) {
            // エラー発生時には result.getError() で例外を取得
            throw result.getError()
        }
        // result.getResult() で成功結果を取得
    }
)

GS2-Deploy から利用できません

指定したユーザIDでGS2にログインし、アクセストークンを取得します ユーザIDの署名検証を実施することで、本APIはクライアントから呼び出しても安全です。

パラメータ データ型 必須 説明
userId string true ユーザーID
keyId string true 署名の作成に使用した暗号鍵 のGRN
body string true アカウント認証情報の署名対象
signature string true 署名
パラメータ データ型 説明
token string アクセストークン
userId string ユーザーID
expire long 有効期限

GS2-Script トリガーイベント

GS2-Auth が提供するスクリプトトリガーはありません

マスターデータフォーマット

マスターデータはありません

GS2-Auth の制限・制約

利用いただくにあたって注意いただく制限・制約はありません