我在Android应用中使用Firebase身份验证9.0.2(Facebook,Google,电子邮件/密码或匿名),这部分可以正常使用。
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null && !flagAuth) {
// User is signed in
} else if (user == null) {
// User is signed out
}
}
};
在此之后,我正在聆听database.getReference(".info/connected")
和database.getReference(".info/authenticated")
,首次我为所有经过身份验证的提供商连接这两个值 true 。当我重新启动我的应用程序时,它总是如此。
final DatabaseReference refAuthenticated = database.getReference(".info/authenticated");
refAuthenticated.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
boolean connected = dataSnapshot.getValue(Boolean.class);
if (connected) {
AppLog.d("Authenticated");
});
} else {
AppLog.d("No more Authenticated");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
AppLog.d("Listener was cancelled at .info/authenticated");
}
});
但是1小时后(我的令牌过期时),Firebase SDK必须自动刷新令牌,但失败并出现此错误
pc_0 - Authentication failed: expired_token (Auth token is expired)
或者这个
pc_0 - Authentication failed: invalid_token (Invalid claim 'kid' in auth header.)
我在Firebase项目中检查了我的SHA-1密钥,这是正确的。
修改 这个问题似乎由Firebase团队解决。