Gamebaseでは、ゲストログインをデフォルトでサポートします。 他のIdP(identity provider、例えばGoogle、Facebook、LINE、NAVER、Twitter)を使用するには、"Login with IdP"を参照してください。
多くのゲームがタイトル画面にログインを設計しています。
上述したロジックは、次のような手順で設計することができます。
次は特定IdPでログインできるようにするコード例です。
ログインできるIdPタイプは下記の通りです。
[注意]
Gamebaseでは、認証のために'ポップアップ'を利用します。'ポップアップ'が許可されていない場合は、'ログイン試行'中の状態で継続して待機することがあります。 事前に'認証前にポップアップを許可してください'という文言を表示し、ユーザーが煩わしさを感じないようにする必要があります。
Facebookの接続可能ブラウザポリシー変更に伴い IEブラウザでFacebookにログイン時、Edgeブラウザに強制的に切り替わります。 従って、Facebookでログインする場合、Chrome、Edgeブラウザを利用して接続する必要があります。 ただし、やむを得ずIEブラウザからFacebookログインをしなければならない場合は、 以下のような方法でEdgeブラウザに強制的に切り替わることを防いで利用することはできるので参考にしてください。 1. Edgeブラウザの設定に接続します。 2. 設定画面メニューから「規定のブラウザ」を選択します。 3. Internet Explorer互換性モードを「オフ」に変更します。
toast.Gamebase.login(providerName, (authToken, error) => { ... });
Example
function gamebaseLogin() {
toast.Gamebase.login('google', function (authToken, error) {
if (error) {
if (error.code == toast.GamebaseConstant.SOCKET_ERROR ||
error.code == toast.GamebaseConstant.SOCKET_RESPONSE_TIMEOUT) {
// Socketエラーです。一時的なネットワーク接続不可状態を意味します。
// ネットワーク状態を確認するか、しばらくしてから再度お試しください。
} else if (error.code == toast.GamebaseConstant.BANNED_MEMBER) {
// ログインを試行したユーザーが利用停止状態です。
// GamebaseConfiguration.uiConfiguration.enablePopup(true)および
// GamebaseConfiguration.uiConfiguration.enableBanPopup(true)で初期化した場合、
// Gamebaseが利用停止に関するUIを自動的に表示します。
// Game UIに合わせて直接利用停止ポップアップを実装するには、toast.Gamebase.getBanInfo()で
// 制裁情報を確認し、ユーザーにゲームをプレイできない理由を表示してください。
var banInfo = toast.Gamebase.getBanInfo();
} else {
// ログイン失敗
}
return;
}
// ログイン成功
console.log('login success');
var userId = authToken.member.userId; // Gamebase UserId
var accessToken = authToken.token.accessToken; // Gamebase AccessToken
});
}
IdPで提供するSDK、REST APIなどを使用し、ゲームで直接認証して発行されたアクセストークンなどを利用してGamebaseにログインできるインターフェイスです。
Credentialパラメータ設定方法
key name | a use |
---|---|
providerName | IdPタイプ設定 |
accessToken | IdPログイン後に取得した認証情報(アクセストークン)設定 |
accessTokenSecret | IdPログイン後に取得した認証情報(アクセストークンシークレット)設定 |
[参考]
ゲーム内で外部サービス(Facebookなど)の固有機能を使用する際に、必要な場合があります。
[注意]
外部SDKでサポートを要求する開発事項は外部SDKのAPIを使用して実装する必要があり、Gamebaseではサポートしません。
var credential = {
providerName: ${IdP},
acessToken: ${IdP AccessToken},
accessTokenSecret: ${IdP AccessTokenSecret}, // This is only nessassary in the case that IdP give you this value.
};
toast.Gamebase.loginWithCredential(credential, callback);
Example
function loginWithFacebookCredential() {
var credential = {
providerName: 'facebook',
accessToken: 'EAAL24qLuXHwBAFL1hS72BzZCUrJyDMRxUq1H5ZBGFIT..........',
};
toast.Gamebase.loginWithCredential(credential, function (authToken, error) {
if (error) {
if (error.code == toast.GamebaseConstant.SOCKET_ERROR ||
error.code == toast.GamebaseConstant.SOCKET_RESPONSE_TIMEOUT) {
// Socketエラーです。一時的なネットワーク接続不可状態を意味します。
// ネットワーク状態を確認するか、しばらくしてから再度お試しください。
} else if (error.code == toast.GamebaseConstant.BANNED_MEMBER) {
// ログインを試行したユーザーが利用停止状態です。
// GamebaseConfiguration.uiConfiguration.enablePopup(true)および
// GamebaseConfiguration.uiConfiguration.enableBanPopup(true)で初期化した場合、
// Gamebaseが利用停止に関するUIを自動的に表示します。
// Game UIに合わせて直接利用停止ポップアップを実装するには、Gamebase.getBanInfo()で
// 制裁情報を確認し、ユーザーにゲームをプレイできない理由を表示してください。
var banInfo = toast.Gamebase.getBanInfo();
} else {
// ログイン失敗
}
return;
}
// ログイン成功
console.log('login success');
var userId = authToken.member.userId; // Gamebase UserId
var accessToken = authToken.token.accessToken; // Gamebase AccessToken
});
}
ログインしたIdPからログアウトを試行します。主にゲームの設定画面にログアウトボタンを置き、ボタンをクリックしたら実行されるように実装する場合が多いです。
ログアウトが成功しても、ゲームユーザーデータは維持されます。
ログアウトに成功すると、該当IdPで認証した記録を削除するため、次回ログイン時にID、パスワード入力ウィンドウが表示されます。
toast.Gamebase.logout((error) => { ... })
Example
function logout() {
toast.Gamebase.logout(function (error) {
if (error) {
// ログアウト失敗
console.log(error);
return;
}
// ログアウト成功
console.log(data);
});
}
ログイン状態で退会を試行します。
[注意]
複数のIdPを連携中の場合、すべてのIdP連携が解除され、Gamebaseユーザーデータが削除されます。
次はログイン状態でゲーム利用者の退会を実装するサンプルコードです。
toast.Gamebase.withdraw(callback)
Example
function withdraw() {
toast.Gamebase.withdraw(function (data, error) {
if (error) {
// 退会失敗
console.log(error);
return;
}
// 退会成功
console.log(data);
});
}
Gamebaseで認証手続きを行った後、アプリを製作する時に必要な情報を取得できます。
Gamebaseで発行した認証情報をインポートできます。
// Obtaining Gamebase UserID
var userId = toast.Gamebase.getUserID();
// Obtaining Gamebase AccessToken
var accessToken = toast.Gamebase.getAccessToken();
Gamebaseコンソールに、制裁されたゲームユーザーとして登録された場合、 ログインを試行すると、下記のような利用制限情報コードが表示されます。toast.Gamebase.getBanInfo()メソッドを利用して制裁情報を確認できます。
// Obtaining Ban Information
var banInfo = toast.Gamebase.getBanInfo();
「退会猶予」機能です。 一時退会をリクエストして即時に退会が行われずに一定期間の猶予期間が過ぎると、退会が行われます。 猶予期間はコンソールで変更できます。
注意
退会猶予機能を使用する場合にはGamebase.withdraw()APIを使用しないでください。 Gamebase.withdraw()APIは即時にアカウントを退会します。
ログインが成功すると、AuthToken.member.temporaryWithdrawalで退会猶予状態のユーザーかを判断できます。
一時退会をリクエストします。 コンソールに指定した期間が過ぎると自動的に退会進行が完了します。
API
toast.Gamebase.TemporaryWithdrawal.requestWithdrawal(callback)
Example
function requestWithdrawal() {
gamebase.TemporaryWithdrawal.requestWithdrawal(function (data, error) {
if (error) {
if (error.code == GamebaseConstant.AUTH_WITHDRAW_ALREADY_TEMPORARY_WITHDRAW) {
// Already requested temporary withdrawal before.
} else {
// Request temporary withdrawal failed.
}
return;
}
// Request temporary withdrawal success.
});
}
退会猶予を使用するゲームは、AuthToken.member.temporaryWithdrawalがnullではない場合、ログイン後に常に該当ユーザーに退会進行中であることを伝える必要があります。
Example
function gamebaseLogin() {
toast.Gamebase.login('google', function (authToken, error) {
if (error) {
// Login failed
return;
}
if(authToken.member.temporaryWithdrawal != null) {
// User is under temporary withdrawal
var gracePeriodDate = authToken.member.temporaryWithdrawal.gracePeriodDate;
} else {
// Login success.
}
});
}
退会リクエストをキャンセルします。 退会リクエストした後、期間が満了して退会が完了すると、キャンセルができません。
API
toast.Gamebase.TemporaryWithdrawal.cancelWithdrawal(callback)
Example
function cancelWithdrawal() {
gamebase.TemporaryWithdrawal.cancelWithdrawal(function (error) {
if (error) {
if (error.code == GamebaseConstant.AUTH_WITHDRAW_NOT_TEMPORARY_WITHDRAW) {
// Never requested temporary withdrawal before.
} else {
// Cancel temporary withdrawal failed.
}
return;
}
// Cancel temporary withdrawal success.
});
}
退会猶予期間を無視して、即時退会を進行します。 実際の内部動作はGamebase.withdraw() APIと同じです。
即時退会はキャンセルできないため、実行するかどうかをユーザーによく確認してください。
API
toast.Gamebase.TemporaryWithdrawal.withdrawImmediately(callback)
Example
function withdrawImmediately() {
gamebase.TemporaryWithdrawal.withdrawImmediately(function (error) {
if (error) {
// Withdraw failed.
return;
}
// Withdraw success.
});
}
Category | Error | Error Code | Description |
---|---|---|---|
Auth | INVALID_MEMBER | 6 | 無効な会員へのリクエストです。 |
BANNED_MEMBER | 7 | 制裁中の会員です。 | |
AUTH_USER_CANCELED | 3001 | ログインがキャンセルされました。 | |
AUTH_NOT_SUPPORTED_PROVIDER | 3002 | サポートしていない認証方式です。 | |
AUTH_NOT_EXIST_MEMBER | 3003 | 存在しないか、退会した会員です。 | |
AUTH_ALREADY_IN_PROGRESS_ERROR | 3010 | 以前の認証プロセスが完了していません。 | |
Auth (Login) | AUTH_TOKEN_LOGIN_FAILED | 3101 | トークンのログインに失敗しました。 |
AUTH_TOKEN_LOGIN_INVALID_TOKEN_INFO | 3102 | トークン情報が有効ではありません。 | |
AUTH_TOKEN_LOGIN_INVALID_LAST_LOGGED_IN_IDP | 3103 | 最近ログインしたIdP情報がありません。 | |
IDP Login | AUTH_IDP_LOGIN_FAILED | 3201 | IdPログインに失敗しました。 |
AUTH_IDP_LOGIN_INVALID_IDP_INFO | 3202 | IdP情報が有効ではありません。 (Consoleに該当IdP情報がありません。) | |
Logout | AUTH_LOGOUT_FAILED | 3501 | ログアウトに失敗しました。 |
Withdrawal | AUTH_WITHDRAW_FAILED | 3601 | 退会に失敗しました。 |
AUTH_WITHDRAW_ALREADY_TEMPORARY_WITHDRAW | 3602 | すでに一時退会中のユーザーです。 | |
AUTH_WITHDRAW_NOT_TEMPORARY_WITHDRAW | 3603 | 一時退会中のユーザーではありません。 | |
Not Playable | AUTH_NOT_PLAYABLE | 3701 | プレイできない状態です(メンテナンスまたはサービス終了など)。 |
Auth(Unknown) | AUTH_UNKNOWN_ERROR | 3999 | 不明なエラーです。(定義されていないエラーです)。 |