Firebase在回调上提供AuthResult,以供用户使用startActivityForSignInWithProvider登录(在我的情况下,提供程序在Android平台上为apple)。我似乎无法以适当的(同步)方式从其获取idToken。
到目前为止,我发现了两个选择,两个都不令人满意:
选项1:投放
((OAuthCredential)authResult.getCredential()).getIdToken()
这有效,但是我不确定这是否安全。 Plis,我在想,如果Firebase希望我们以这种方式获取idToken,他们会把它添加到AuthCredential中。
选项2:从用户那里获取它
authResult.getUser().getIdToken(false).addOnCompleteListener { ... }
这似乎是一个安全的解决方案,但这是一种异步方法。在用户手动登录后执行另一种异步方法似乎没有任何意义(这是我正在为现有用户执行的操作)。
您应该使用异步侦听器。原因是因为ID令牌每小时都会过期,并且您的监听者会在刷新令牌的那一刻就知道该令牌,因此您可以立即开始使用该新令牌。