我正在使用firebase 9.x和自定义身份验证。根据文档,令牌到期时间不能超过一小时。是否有一个我可以注册的监听器,当令牌到期时将被调用。
该文档还讨论了令牌的自动刷新。我认为这不适用于自定义身份验证。别的我知道。
https://firebase.google.com/docs/auth/server#use_the_firebase_server_sdk
理想情况下,文档(上面)应该包含所需的信息。
提前致谢。
答案 0 :(得分:3)
生成服务器端(自定义身份验证)的令牌是JWT(JSON Web令牌)。此令牌必须由您的客户端(Android?)提供给Firebase服务器,以向Firebase验证用户身份。在9.x库中,似乎这些令牌现在具有一小时的最大寿命(即在60分钟后不再接受它们)。 (参见Sam Stern在本期中的评论:https://github.com/firebase/quickstart-android/issues/31)。
Sam表示,一旦使用自定义生成的令牌进行身份验证,Android客户端将一直保持授权状态,直到退出。
如果您确实需要知道JWT令牌何时有效,那么在您的服务器上生成它之后应该是60分钟。如果令牌尚未用于使用Firebase进行身份验证,此时您可以重新生成一个新令牌并使用该令牌。
答案 1 :(得分:1)
你试过AuthListener吗?
mAuthListener = new FirebaseAuth.AuthStateListener(){
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
user.getCurrentUser().getToken(true);
// ...
}
};;
mAuth.addAuthStateListener(mAuthListener);
答案 2 :(得分:0)
该文档具有误导性。应该说您有1个小时的时间使用自定义令牌登录。我还觉得,如果令牌是临时令牌,则应该一次性使用。否则,这会混淆他们希望您使用令牌的方式。
如果设置正确,SDK将负责使会话令牌保持最新状态。有关更多信息,自定义标记仅用于启动SESSION。因此,您必须花费数小时才能使用自定义令牌登录。登录并正确设置Firebase管理员帐户和应用程序配置后,SDK即可与Firebase后端进行来回通信,以使令牌保持最新状态。使用FirebaseAuth.signout()退出后,如果超过1小时,则需要一个新的自定义令牌重新登录。
因此,在大多数情况下,您实际上不需要监听令牌到期