火库访问令牌会自动刷新吗?

我使用的是 Firebase 电子邮件/密码身份验证。用户成功登录后,我通过以下方式查询访问令牌:

FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getIdToken(true)
    .addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
    public void onComplete(@NonNull Task<GetTokenResult> task) {
        if (task.isSuccessful()) {
            String idToken = task.getResult().getToken();
            // Send token to your backend via HTTPS
            // ...
        } else {
            // Handle error -> task.getException();
        }
    }
});

根据 Firebase 文档,访问令牌将在 1 小时后过期。为了处理在我的应用程序中始终具有当前访问令牌的情况,我正在寻找一个解决方案,我在firebase文档中发现我必须注册Firebase.IdTokenListener才能收听

onIdTokenChanged 事件

我的问题是:是

onIdTokenChanged 事件

如果访问令牌过期,是否自动触发?

如果在访问令牌过期后未自动触发事件,那么使用

"FirebaseAuth.getInstance().getCurrentUser().getIdToken(boolean)"

方法?

我知道,如果我打电话给

mUser.getToken(true)

然后触发提到的事件,并且

IdTokenListener

被触发。但这不是我想要的。


答案 1

onIdTokenChanged每当 ID 令牌更改时触发。如果 ID 令牌已过期,则不会触发。如果刷新新的 ID 令牌、新用户登录或现有用户注销,它将触发。

如果需要,Firebase 会自动刷新。例如,如果您使用的是实时数据库或Firestore,它们将在令牌过期后自动刷新令牌,因为它们需要持久连接和ID令牌。这将导致该侦听器触发。

getIdToken()将缓存未过期的令牌,如果您调用它并且它检测到过期,它将自动刷新将触发该侦听器的ID令牌。

顺便说一句,已弃用。您应该改用。getToken()getIdToken


答案 2

推荐