情况如下:
1)用户已登录。之前生成的最后一个令牌已经过期。即使没有,问题也没有发生。
2)安装了应用更新。 (不是android studio即时运行的东西,具有更高的应用程序版本和appversioncode的Actual signed apk)
3)用户打开应用程序和我用来刷新id令牌的常规代码。
4)没有一个听众被击中,也没有超时
这是一个错误还是我在这里做错了什么?
清除应用数据并重新启动可清除所有问题。在这种情况下,代码运行正常。它只会在更新后卡住。
注意:我已将forceRefresh布尔值设置为false,因为此代码在每次应用程序启动时运行,并且我不希望在代数有限制的情况下调用不必要的id令牌创建。当且仅当它已经过期时,false布尔值会刷新令牌。
FirebaseAuth.getInstance().getCurrentUser().getIdToken(false).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
@Override
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()) {
//logic to proceed further
}
}).addOnFailureListener(new OnFailureListener() {
@SuppressLint("SetTextI18n")
@Override
public void onFailure(@NonNull Exception e) {
if(e instanceof FirebaseAuthInvalidUserException){
//Do stuff to log out the user session
}else{
//Some other exception occurred, let the user retry
}
}
});
P.S我确实在所有这些之前进行了无效检查,以确定是否确实存在用户。
答案 0 :(得分:0)
对于任何想知道这一点的人,我提出了Firebase支持的票证,结果发现它是Firebase Auth 15.1.0中的一个错误
根据发行说明,他们修改了令牌刷新逻辑,可能这就是引入错误的地方。
根据我的测试,系统可以正常工作到12.0.1版本。如果您打算使用类似的功能,请不要更新到15.1.0。