Firebase предоставляет AuthResult при обратном вызове для входа пользователя в систему с использованием startActivityForSignInWithProvider (в моем случае поставщик - Apple на платформе Android). Кажется, я не могу получить от него idToken правильным (синхронным) способом.
Пока что я нашел два варианта, оба не устраивают:
Вариант 1: кастинг
((OAuthCredential)authResult.getCredential()).getIdToken()
Это работает, но я не уверен, что это безопасный бросок. Plis, я думаю, если бы Firebase захотела, чтобы мы получили idToken таким образом, они бы добавили его в AuthCredential.
Вариант 2: получение от пользователя
authResult.getUser().getIdToken(false).addOnCompleteListener { ... }
Это кажется безопасным решением, но это асинхронный метод. Кажется, не имеет смысла выполнять другой асинхронный метод после того, как пользователь просто вручную вошел в систему (это то, что я делаю для существующего пользователя).