Jugadores e inicio de sesión

Cuentas de invitado que sobreviven a los reinicios, nombres visibles y vinculación de invitados a correo o Google.

Los comentarios del código y los nombres de la API se mantienen en inglés para que coincidan con los SDK.

En esta página

Inicio de sesión como invitado#

Llama a esto una vez al iniciar. Restaura la sesión guardada (y la renueva si hace falta) o crea un invitado nuevo, para que el mismo jugador conserve su progreso.

C#
var signIn = await Majacloud.Auth.SignInAnonymouslyAsync();
if (signIn.Ok)
{
    var player = signIn.Value;
    Debug.Log(player.PlayerId + " " + player.DisplayName + " guest: " + player.IsGuest);
}
Los invitados nuevos están limitados a 30 por red cada 15 minutos, lo que frena la creación automatizada de cuentas.

Nombres visibles#

Los invitados reciben un nombre generado, como Guest 4821. Los jugadores pueden elegir el suyo; las tablas de clasificación lo muestran.

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

La vinculación abre una página web segura en tu servidor MAJACLOUD donde el jugador inicia sesión o se registra con correo y contraseña o con Google. El progreso del invitado (puntuaciones, guardados, billetera) pasa a esa cuenta y el juego recibe la nueva sesión, en cualquier dispositivo.

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. El SDK crea un secreto de un solo uso (PKCE) e inicia un flujo de inicio de sesión.
  2. El jugador termina en la página web; mientras tanto, el SDK consulta el estado hasta que el flujo se completa.
  3. El SDK canjea el flujo por una sesión usando el secreto, así que un enlace robado no sirve de nada.
  4. Los flujos caducan a los 15 minutos (el plazo se amplía mientras la página está abierta).

Volver al juego#

Sin una URL de retorno, la página indica a los jugadores que vuelvan al juego. Para devolverlos automáticamente, añade tu esquema de URL personalizado (por ejemplo, mygame) en Claves de API ▸ URL de retorno del inicio de sesión de jugadores y pasa mygame://auth como URL de retorno.

Eventos#

Reacciona cuando cambia el jugador, cuando cierra sesión o cuando la sesión ya no se puede renovar:

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

Cerrar sesión#

Al cerrar sesión, la sesión se revoca en el servidor y se olvida en el dispositivo. El siguiente inicio de sesión crea un invitado nuevo.

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

Leer jugadores desde tu servidor#

Con la clave secreta, tu servidor puede leer cualquier jugador, incluidos el correo y los saldos de la billetera:

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);

En el panel#

La página Jugadores muestra todos los jugadores con su método de inicio de sesión, puntuaciones, guardados y billetera. Desde ahí puedes renombrar o desactivar un jugador, cerrar su sesión en todas partes, enviarle un enlace para restablecer la contraseña o eliminarlo.

Busca en títulos, encabezados y texto de las páginas.

↑↓ para navegar ↵ para abrir Esc para cerrar