> For the complete documentation index, see [llms.txt](/llms.txt)

# GS2-Auth SDK for Game Engine API 레퍼런스

게임 엔진용 GS2-Auth SDK의 모델 사양과 API 레퍼런스



## 모델

### EzAccessToken

액세스 토큰<br>

사용자 인증 후 발급되는 액세스 토큰을 관리하는 모델입니다.<br>
액세스 토큰은 사용자가 서비스에 로그인되어 있는 동안 해당 세션의 신원을 증명하는 데 사용됩니다.<br>
토큰에는 유효기간이 설정되어 있으며, 만료되면 재인증이 필요합니다.

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| token | string |  | ✓ |  |  ~ 1024자 | 액세스 토큰<br>액세스를 인증하기 위한 토큰입니다.<br>이 토큰은 시스템에 의해 자동으로 생성되며, 사용자의 세션을 식별합니다. |
| userId | string |  | ✓ |  |  ~ 128자 | 사용자ID |
| expire | long |  |  | 현재 시각으로부터 1시간 후의 절대 시각 |  | 유효기간<br>토큰의 유효기간을 나타내는 타임스탬프입니다. 이 시각에 도달하면 토큰은 무효화됩니다.<br>UNIX 시간·밀리초 |


---

## 메서드

### login

계정 인증 정보를 사용하여 GS2에 로그인<br>

[GS2-Account::Authentication](../../account/game_engine/#authentication)에서 획득한 `body`와 `signature`를 전달하여 로그인하고 `액세스 토큰`을 받습니다.<br>
`액세스 토큰`은 유효기간이 1시간인 임시 로그인 정보로, GS2의 각 서비스를 해당 플레이어로서 이용하기 위해 필요합니다.<br>

일반적으로 이 API를 직접 호출할 필요는 없습니다.<br>
Unity 및 Unreal Engine 5 SDK에서는 [GS2-Account::Authentication](../../account/game_engine/#authentication)과 이 API를 하나로 묶어 실행하는 Profile::Login이 제공됩니다.<br>
자세한 내용은 [초기화 처리 / Game Engine](../../initialize/game_engine/)을 참조하십시오.

#### Request

|  | 타입 | 활성화 조건 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- | --- |
| keyId | string |  | | "grn:gs2:{region}:{ownerId}:key:default:key:default" |  ~ 1024자 | 암호화 키 GRN |
| body | string |  | ✓|  |  ~ 524288자 | 서명 대상 계정 인증 정보 |
| signature | string |  | ✓|  |  ~ 1024자 | 서명 |

#### Result

|  | 타입 | 설명 |
| --- | --- | --- |
| token | string | 액세스 토큰<br>액세스를 인증하기 위한 토큰입니다.<br>이 토큰은 시스템에 의해 자동으로 생성되며, 사용자의 세션을 식별합니다.|
| userId | string | 사용자ID|
| expire | long | 유효기간<br>토큰의 유효기간을 나타내는 타임스탬프입니다. 이 시각에 도달하면 토큰이 무효가 됩니다.<br>UNIX 시간(밀리초)|

#### 구현 예제




**Unity (UniTask)**
```csharp
    var domain = gs2.Auth.AccessToken(
    );
    var result = await domain.LoginAsync(
        body: "body",
        signature: "signature",
        keyId: "key-0001"
    );
    var token = result.Token;
    var userId = result.UserId;
    var expire = result.Expire;

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Auth.AccessToken(
    );
    var future = domain.LoginFuture(
        body: "body",
        signature: "signature",
        keyId: "key-0001"
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    var token = future.Result.Token;
    var userId = future.Result.UserId;
    var expire = future.Result.Expire;

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Auth->AccessToken(
    );
    const auto Future = Domain->Login(
        "body", // body
        "signature", // signature
        "key-0001" // keyId
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }
    const auto Result = Future->GetTask().Result();
    const auto Token = Result->Token;
    const auto UserId = Result->UserId;
    const auto Expire = Result->Expire;

```

**Godot**
```gdscript

var domain = ez.auth.access_token(
    )

var async_result = await domain.login(
    "body", # body
    "signature", # signature
    "key-0001" # key_id
)
if async_result.error != null:
    push_error(str(async_result.error))
    return

var result = async_result.result

```


---



