4. Authentification

초기화가 성공하였다면(Playable), 인증 프로세스 및 대부분의 Gamebase API를 호출 할 수 있습니다.

4.1. Login API

초기화 이후, 다음의 API를 통하여 로그인을 시도 할 수 있습니다.

1
2
// 초기화 API
toast.Gamebase.login(idp, (authToken, error) => { ... })

IdP(Identity Provider)에는 다음의 값들이 올 수 있습니다. (대소문자 구분 없음)

  • guest
  • google
  • facebook
  • twitter
  • line
  • naver
  • payco

이번 CodeLab에서는 guest 인증을 시도해보겠습니다.

주석

다른 IdP들의 경우, 각 IdP 개발자 페이지에서 《애플리케이션》 생성 및 clientId/Secret 등을 발급받는 사전 작업이 필요합니다.

그 후, 발급받은 IdP 정보들을 TOAST Gamebase Console에 입력하는 과정이 필요합니다. (초기화시 입력한 값들을 launchingInfo 데이터로 받아온 후, 인증에 사용합니다.)

Guest 인증을 위해서는 위의 toast.Gamebase.login() API를 호출하면 됩니다.

4.1.1. AuthToken

toast.Gamebase.login() API 호출 이후, 받게되는 콜백의 첫번째 파라미터는 AuthToken 정보를 담고 있습니다. 인증하고자하는 IdP의 AccessToken 정보 및 유저 프로필 정보등을 담고 있습니다.

AuthToken의 구조는 다음과 같습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
{
    token: {
        accessToken: accessToken, // string - Gamebase AccessToken 입니다.
        accessTokenSecret: accessTokenSecret, // string - Gamebase AccessToken Secret 입니다.
    },
    member: {
        userId: userId, // Gamebase UserId 입니다.
        regDate: regDate, // number, 가입 날짜입니다. epoch time입니다.
        lastLoginDate: lastLoginDate, // number, 최근 로그인 날짜입니다. epoch time입니다.
        authList: authList, // Array - 연동된 IDP 리스트를 나타냅니다.
    },
    banInfo: {
        userId: userId, // string - Gamebase UserId 입니다.
        banType: banType, // string - 이용정지타입입니다. PERMANENT|TEMPORARILY 값입니다.
        message: message, // string - 이용정지 사유입니다.
        beginDate: beginDate, // number, 이용정지 시간 날짜입니다. epoch time입니다.
        endDate: endDate, // number, 이용정지 종료 날짜입니다. epoch time입니다.
        csInfo: csInfo, // string - cs email 정보입니다.
        csUrl: csUrl, // string - cs url 정보입니다.
    }
}

4.1.2. Example

게임베이스 로그인에 대한 예시 코드는 다음과 같습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<!DOCTYPE html>
<html>
<head>
  <script src="/assets/lib/gamebase.js"></script>
</head>
<body>
  <button id="gbInitBtn">Gamebase 초기화</button>
  <button id="gbLoginGuestBtn">Gamebase Guest 로그인</button>
  <textarea id="gbAPIResultTextarea" placeholder="Gamebase API 결과창"></textarea>
</body>
</html>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
var gbInitBtn = document.getElementById('gbInitBtn');
var gbLoginGuestBtn = document.getElementById('gbLoginGuestBtn');

gbLoginGuestBtn.addEventListener('click', function() {
    gamebaseLogin('guest');
});

function gamebaseLogin(idP) {
    toast.Gamebase.login(idP, function(authToken, error) {
        if (error != null) {
            addTextToTextArea('Login Failed.');
            return;
        }

        var userId = authToken.member.userId;
        addTextToTextArea(`Login Success: userId(${userId})`);
    };
}

function gamebaseInitialize() {
    ...
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#gbInitBtn {
  width:200px;
  height:55px;
  border: 1px solid blue;
  background-color: blue;
  color: white;
  font-weight: bold;
  font-size:18px;
  border-radius: 10px;
  cursor: pointer;
}

#gbInitBtn:hover {
  opacity: .9;
}


#gbAPIResultTextarea {
  position:relative;
  width: 100%;
  height: 400px;
  font-size:14px;
}


4.2. Logout API

로그인 이후, 다음의 API를 통하여 로그아웃을 시도 할 수 있습니다. Guest 로그아웃의 경우 단순 Gamebase 로그아웃을 의미하며, Guest로 재로그인시 동일한 UserID로 로그인을 할 수 있습니다.

만약, 브라우저 Cookie를 삭제한다면, Guest 계정은 유실 될 수 있습니다.

1
2
// 초기화 API
toast.Gamebase.logout((error) => { ... })