【发布时间】:2020-05-14 08:47:59
【问题描述】:
我在一个使用 java 开发的 Android 项目中使用 Firebase 实时数据库和 Firebase 手机身份验证。
我已经能够通过电话登录成功验证用户身份, 现在我在数据库助手中设置了一些 ValueEventListeners。 然而,大约一小时后(因为 firebase 身份验证令牌过期),我的值甚至监听器回调都没有触发。
我该如何处理这种情况。我想让我的用户保持身份验证,除非他们手动注销。
public void refreshUserAuthToken(){
try {
FirebaseUser thisUser = FirebaseAuth.getInstance().getCurrentUser();
thisUser.getIdToken(true).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
@Override
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()){
// nothing
// the task is succesful
}
else {
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
}
}
})
}
catch (Exception e){
// new Intent(MainActivity.class, this)
}
}
我应该何时以及如何调用它? 我尝试在登录活动中使用它,但任务总是不成功
我是否应该在每次加载活动时调用此函数?
我还有应用程序与 Web 服务交互,我该如何利用它? 有人可以将我指向一个 git repo 或提供一个代码流来帮助我让我的用户长时间保持登录状态吗?
提前致谢
编辑
我将 getIdToken(true) 更改为 getIdToken(false),这不会导致它总是失败。
这在一定程度上解决了我的目的,但是如果用户将活动/片段打开超过一小时,我仍然不确定如何以及在哪里调用它。
下一个阶段是我的 firebase 实时数据库似乎在内部注销,但是如何传递这个新令牌?
一遍又一遍地调用这个函数,如果令牌超时,肯定会把我带到登录页面,但是我怎样才能让firebase回调保持登录状态?
【问题讨论】:
标签: android firebase firebase-authentication