Игроки и вход

Гостевые аккаунты, которые сохраняются между запусками, отображаемые имена и привязка гостей к email или 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);
}
С одной сети можно создать не более 30 новых гостей за 15 минут — это блокирует автоматическое создание аккаунтов.

Отображаемые имена#

Гости получают сгенерированное имя, например Guest 4821. Игроки могут выбрать своё — его и показывают таблицы лидеров.

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

При привязке открывается защищённая веб-страница на вашем сервере MAJACLOUD, где игрок входит или регистрируется по email и паролю или через 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 создаёт одноразовый секрет (PKCE) и запускает процесс входа.
  2. Игрок завершает вход на веб-странице; SDK опрашивает сервер, пока процесс не завершится.
  3. SDK обменивает завершённый процесс на сессию с помощью секрета, поэтому украденная ссылка бесполезна.
  4. Процесс истекает через 15 минут (срок продлевается, пока страница открыта).

Возврат в игру#

Без URL возврата страница предлагает игроку самостоятельно вернуться в игру. Чтобы возвращать его автоматически, добавьте свою URL-схему (например, mygame) в API-ключи ▸ URL возврата после входа игрока и передайте mygame://auth как URL возврата.

События#

Реагируйте, когда игрок меняется, выходит или когда сессию больше нельзя обновить:

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

Чтение данных игроков с сервера#

С секретным ключом ваш сервер может читать данные любого игрока, включая email и балансы кошелька:

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 закрыть