1

Firebase 正在使用 startActivityForSignInWithProvider 为用户登录的回调提供 AuthResult(在我的情况下,提供者是 Android 平台上的苹果)。我似乎无法以适当的(同步)方式从中获取 idToken 。

到目前为止,我找到了两个选项,都不令人满意:

选项1:铸造

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

这行得通,但我不确定它是否安全。Plis,我在想,如果 Firebase 希望我们以这种方式获取 idToken,他们会将其添加到 AuthCredential 中。

选项2:从用户那里获取

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

这似乎是一个安全的解决方案,但它是一种异步方法。在用户刚刚手动登录之后执行另一个异步方法似乎没有意义(这是我为现有用户所做的)。

4

1 回答 1

1

您应该使用异步侦听器。这样做的原因是因为 ID 令牌每小时都会过期,而您的侦听器就是您知道令牌刷新的那一刻的方式,因此您可以立即开始使用该新令牌。

于 2020-02-17T18:12:15.083 回答