プレイヤーとログイン

再起動しても消えないゲストアカウント、表示名、ゲストとメールアドレスや Google との連携について説明します。

コードのコメントと API 名は、SDK と一致させるため英語のままにしています。

このページの内容

ゲストログイン#

起動時に一度呼び出します。保存済みのセッションを復元する(必要に応じて更新する)か、新しいゲストを作成するため、同じプレイヤーが進行状況を保持できます。

C#
var signIn = await Majacloud.Auth.SignInAnonymouslyAsync();
if (signIn.Ok)
{
    var player = signIn.Value;
    Debug.Log(player.PlayerId + " " + player.DisplayName + " guest: " + player.IsGuest);
}
新しいゲストの作成は、ネットワークごとに 15 分あたり 30 件までに制限されています。これにより、スクリプトによるアカウントの大量作成を防ぎます。

表示名#

ゲストには Guest 4821 のような名前が自動で付けられます。プレイヤーは自分で名前を設定でき、その名前がリーダーボードに表示されます。

C#
var renamed = await Majacloud.Auth.SetDisplayNameAsync("Nova");
if (!renamed.Ok) Debug.Log(renamed.Error.Message); // e.g. Validation: too long

連携を開始すると MAJACLOUD サーバー上の安全な Web ページが開き、プレイヤーはメールアドレスとパスワード、または Google でログインまたは登録します。ゲストの進行状況(スコア、セーブデータ、ウォレット)はそのアカウントに移行し、ゲームは新しいセッションを受け取ります。どのデバイスでも同じように動作します。

C#
// Opens the sign-in page, waits for the player, then switches the session
var linked = await Majacloud.Auth.LinkAccountAsync(new MajacloudLinkOptions { ReturnUrl = "mygame://auth" });
if (linked.Ok) Debug.Log("Signed in as " + linked.Value.DisplayName);

// WebGL: browsers only open tabs from a click, so start first and open inside the handler
var flow = await Majacloud.Auth.StartLinkAsync(new MajacloudLinkOptions { OpenBrowser = false });
linkButton.onClick.AddListener(() => flow.Value.OpenInBrowser());
var result = await flow.Value.WaitForCompletionAsync();
  1. SDK が 1 回限りのシークレット(PKCE)を生成し、ログインフローを開始します。
  2. プレイヤーが Web ページで操作を完了するまで、SDK はポーリングを続けます。
  3. SDK はシークレットを使ってフローをセッションと交換します。そのため、リンクが盗まれても悪用できません。
  4. フローは 15 分で期限切れになります(ページを開いている間は延長されます)。

ゲームに戻る#

戻り先 URL を指定しない場合、ページにはゲームに戻るよう案内が表示されます。自動でゲームに戻すには、API キー ▸ プレイヤーログインの戻り先 URL にカスタム URL スキーム(例: mygame)を追加し、戻り先 URL として mygame://auth を渡します。

イベント#

プレイヤーが切り替わったとき、ログアウトしたとき、またはセッションを更新できなくなったときに処理を行えます。

C#
Majacloud.Auth.PlayerChanged += player => nameLabel.text = player?.DisplayName;
Majacloud.Auth.SignedOut += () => ShowTitleScreen();
Majacloud.Auth.SessionExpired += () => ShowSignIn();

ログアウト#

ログアウトすると、サーバー上のセッションが失効し、デバイスからも削除されます。次回のログインでは新しいゲストが作成されます。

C#
await Majacloud.Auth.SignOutAsync();   // revokes the session on the server
Majacloud.Auth.ClearLocalSession();   // or only forget it on this device

サーバーからプレイヤーを読み取る#

シークレットキーを使うと、サーバーからメールアドレスやウォレット残高を含む、任意のプレイヤーの情報を読み取れます。

JavaScript
// Node.js, created with secretKey
const found = await admin.server.getPlayer('player_3f9c…');
if (found.ok) console.log(found.value.player.email, found.value.player.wallets);

ダッシュボードでの管理#

プレイヤーページには、すべてのプレイヤーがログイン方法、スコア、セーブデータ、ウォレットとともに一覧表示されます。ここから、プレイヤーの名前変更や無効化、すべての端末からのログアウト、パスワード再設定リンクの送信、削除を行えます。

ページタイトル、見出し、本文を検索します。

↑↓ で移動 ↵ で開く Esc で閉じる