Как получить Firebase idToken от AuthResult? - PullRequest
0 голосов
/ 17 февраля 2020

Firebase предоставляет AuthResult при обратном вызове для входа пользователя с использованием startActivityForSignInWithProvider (в моем случае провайдер - apple на платформе Android). Кажется, я не могу извлечь из него idToken правильным (синхронным) способом.

Пока я нашел два варианта, оба не удовлетворяют:

Вариант 1: приведение

((OAuthCredential)authResult.getCredential()).getIdToken()

Это работает, но я не уверен, что это безопасный бросок. Плис, я думаю, если бы Firebase хотел, чтобы мы получили idToken таким образом, они бы добавили его в AuthCredential.

Вариант 2: выборка от пользователя

authResult.getUser().getIdToken(false).addOnCompleteListener { ... }

Это кажется безопасным решением, но это асин c метод. Кажется, не имеет смысла выполнять другой asyn c метод после того, как пользователь только что вошел в систему вручную (это то, что я делаю для существующего пользователя).

1 Ответ

0 голосов
/ 17 февраля 2020

Вы должны использовать асинхронный слушатель. Причина этого в том, что срок действия токена-идентификатора истекает каждый час, и ваш слушатель знает, как именно он обновляется, и вы можете сразу начать использовать этот новый токен.

...