2016-11-23 5 views
1

Я использую авторизацию пользователя электронной почты и пытаюсь реализовать функцию «запомнить меня», и до сих пор им не повезло.Плагин Firebase Unity: как вы сохраняете сеанс пользователя? (автоматический вход)

Я пробовал шаблон маркера (email-pass signin -> request firebase token -> хранить токен, а затем повторно воспроизводить токен на сервере, используя SignInWithCustomTokenAsync(), когда пользователь снова открывает игру), но это сбой с ошибкой каждый раз с сообщением об исключении

Неверный формат пользовательских форматов. Проверьте документацию.

Итак, мой вопрос в том, что если токены Firebase считаются искаженными Firebase (это проверенный JWT, я проверил), то как вы сохраняете сеанс пользователя?

Конечно, я могу хранить электронную почту и пароль пользователя в playerprefs или что-то еще, но это такая плохая практика безопасности, я бы не коснулся ее 10-футовым полюсом.

ответ

0

Насколько я знаю (я не эксперт), вы не можете создавать жетоны через SDK Unity. Вам нужно будет запустить SDK администратора (https://firebase.google.com/docs/auth/admin/create-custom-tokens), сгенерировать их с помощью этого и отправить их клиенту. Функция TokenAsync в SDK генерирует только токен идентификатора. Не токен доступа.

Тем не менее, я реализовал решение, основанное на этом несколько дней назад, только для того, чтобы узнать, что пользовательские токены, созданные в SDK Admin, имеют срок действия, ограниченный 3600 секунд (1 час). Который довольно короткий, и в конечном итоге это не помогло мне автоматически войти в систему, если они пострадали от сбоя или просто прекратили приложение.

Я бы любил, чтобы иметь возможность настраивать пользовательские токены, чтобы я мог установить более длительное время истечения срока действия и еще много чего.

0

Это старый вопрос, но Firebase фактически хранит пользователя между сеансами. Можно сказать, что «Запомнить меня» встроено по умолчанию. У вас должен быть слушатель, подключенный к FirebaseAuth.DefaultInstance.StateChanged, и он будет автоматически вызван после завершения инициализации. Если вызываются StateChanged и FirebaseAuth.DefaultInstance.CurrentUser != null, то вы вошли в систему и можете автоматически пропускать экран входа.

Я не знаю, является ли это лучшей практикой или нет, но у меня обычно есть приглашение «Вход в систему ...» в начале моих проектов, которое длится 10 секунд, прежде чем показывать экран входа в систему. Очевидно, что 10 секунд заканчиваются раньше (обычно в течение 1 секунды), если FirebaseAuth.DefaultInstance.StateChanged запрашивает логин.

Смежные вопросы