【问题标题】:How to get Firebase idToken from AuthResult?如何从 AuthResult 获取 Firebase idToken?
【发布时间】:2020-06-01 17:13:21
【问题描述】:

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

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

选项 1:投射

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

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

选项 2:从用户那里获取它

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

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

【问题讨论】:

    标签: android firebase-authentication apple-sign-in


    【解决方案1】:

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

    【讨论】:

    • 谢谢,只要没有任何其他选项,我想这就是我要做的,但我仍然认为将它放在 AuthResult 的某个地方更有意义,因为它是一个刷新刚刚完成的动作
    • 身份验证结果不一定需要新的 ID 令牌。它们是不同的事件,这就是为什么它们是两个不同的听众。他们实际上曾经在同一个监听器中,但这是有问题的,所以他们像这样将它们分开。
    猜你喜欢
    • 2020-04-18
    • 2020-10-12
    • 2019-08-29
    • 2019-02-05
    • 2021-09-14
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多