Авторизация по секретному коду
Способ сохранить прогресс даже на площадках без авторизации.
Не на всех площадках есть авторизация, однако никому не хочется терять свой прогресс. В рамках нашего сервиса весь прогресс уже хранится в облаке. Вам нужно только предложить пользователю записать секретный код.
Преимущества:
- Анонимная авторизация
- Не требуется вводить имя / почту / телефон и другие персональные данные
- Не используются Cookies
- Работает в режиме инкогнито
- Быстрый способ входа, не нужно заполнять ничего кроме короткого кода
- Способ продолжить игру на любом устройстве
- Разработчику
- Не нужно реализовывать логику авторизации, работать с формами или UI
- Нет дополнительного провайдера в цепочке авторизации
- Дополнительный способ удержать игрока на площадках без авторизации
Поддерживаемые площадки
Площадки без поддержки
Концепция
Каждому игроку при создании присваивается секретный код в рамках проекта и площадки.
Для поддержки с вашей стороны, вам необходимо:
- Проверить, что на площадке доступна авторизация через секретный код;
- Отрисовать окно профиля:
- Показать секретный код игрока, желательно с пояснением и кнопкой копировать для удобства;
- Кнопка входа / смены аккаунта;
- При нажатии вызвать метод входа
gp.player.login()
- При входе сработает событие успешной авторизации
gp.player.on('login')
- Перерисовать интерфейс / сцену, обновив данные игрока
- При нажатии вызвать метод входа
Методы
Узнать, что на площадке доступна авторизация через секретный код можно через метод FREE:
- JavaScript
- Unity
gp.platform.isSecretCodeAuthAvailable; // boolean
GP_Platform.IsSecretCodeAuthAvailable(); // bool
Получить секретный код, чтобы отобразить его в игре можно через метод FREE:
- JavaScript
- Unity
gp.player.get('secretCode');
GP_Player.GetString("secretCode");
Вызвать окно авторизации можно через метод +0-1 Request:
- JavaScript
- Unity
gp.player.login();
GP_Player.Login();
Дождаться события авторизации можно через подписку на событие FREE:
- JavaScript
- Unity
gp.player.on('login', (success) => {});
// Подписка на события
private void OnEnable()
{
GP_Player.OnLoginComplete += OnLoginComplete;
GP_Player.OnLoginError += OnLoginError;
}
// Отписка от событий
private void OnDisable()
{
GP_Player.OnLoginComplete -= OnLoginComplete;
GP_Player.OnLoginError -= OnLoginError;
}
// Обработка событий
private void OnLoginComplete()
{
Debug.Log("LoginComplete");
}
// Обработка событий
private void OnLoginError()
{
Debug.Log("LoginError");
}
Примеры
Пример работы с секретным кодом с поддержкой авторизации через площадку:
- JavaScript
- Unity
// Пример контроллера модального окна профиля
const profileModal = {
// Поле под визуальное отображение секретного кода игроку
secretCodeTextField: {
setText(secretCode) {
// Установить текст поля под секретный код
},
},
// Кнопка входа через секретный код
buttonSecretCodeAuth: {
show() {
// Отобразить кнопку в профиле игрока
},
onClick() {
// Показываем окно входа
gp.player.login();
},
},
open() {
// Открыть модальное окно
// Показать внутри окна кнопку входа по секретному коду
this.buttonSecretCodeAuth.show();
// Показать секретный код игроку
this.secretCodeTextField.setText(gp.player.get('secretCode'));
},
close() {
// Закрыть модальное окно
},
};
// Пример контроллера КНОПКИ входа через встроенную в площадку авторизацию
const buttonNativeAuth = {
show() {
// Отобразить кнопку в игре
},
onClick() {
// Показываем окно входа
gp.player.login();
},
};
// Пример контроллера КНОПКИ показа модального окна профиля игрока
const buttonOpenProfileModal = {
show() {
// Отобразить кнопку в игре
},
onClick() {
// Открываем модальное окно профиля игрока
profileModal.open();
},
};
// Игра запущена
function onGameStart() {
// Ожидаем событие входа
gp.player.on('login', (success) => {
if (success) {
// Закрываем окно профиля игрока
profileModal.close();
// Обновляем интерфейс с данными игрока
game.reloadUserUI();
} else {
// обрабатывать ошибки не нужно, они обрабатываются в нашем UI или UI площадки
// Причиной неудачи может быть только закрытие окна авторизации игроком
}
});
// Проверяем поддерживает ли площадка авторизацию
if (gp.platform.hasIntegratedAuth) {
// Показываем кнопку входа через авторизацию площадки
buttonNativeAuth.show();
// Проверяем доступна ли на площадке авторизация по секретному коду
} else if (gp.platform.isSecretCodeAuthAvailable) {
// Показываем кнопку открытия профиля
buttonOpenProfileModal.show();
}
}
// Скоро будет пример
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram
: @gs_community.
Для ваших обращений e-mail
: [email protected]
Желаем вам успехов!