gpt4 book ai didi

android - Firebase addValueEventListener 只能工作几个小时

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:41 24 4
gpt4 key购买 nike

有人遇到过这个问题吗?我的 firebase 代码基本上只能工作几个小时(功能齐全),然后当我再次尝试时它就不再工作了。请参阅下面的代码了解我是如何调用它的:

        ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.e(TAG, "onDataChange: Job found");
for (DataSnapshot jobSnapShot : dataSnapshot.getChildren()) {
Log.e(TAG, "onDataChange: Job +1");
Job job = jobSnapShot.getValue(Job.class);
// Add the ID into the job
job.setId(dataSnapshot.getKey());

// Set the job
arrayList.add(job);
subscriber.onNext(job);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "onCancelled: " + databaseError.getMessage());
}
};
Log.e(TAG, "call: id:" + userId + ", reference:" + FirebaseDatabase.getInstance().getReference().toString());
Log.e(TAG, "call: Calling Jobs...");
FirebaseDatabase.getInstance()
.getReference()
.child(context.getString(R.string.firebase_jobs))
.child(userId).
addValueEventListener(valueEventListener);

线条:

    Log.e(TAG, "call: id:" + userId + ", reference:" + FirebaseDatabase.getInstance().getReference().toString());
Log.e(TAG, "call: Calling Jobs...");

每次执行。 UserId 和 getReference 返回正确的值。但是,基本上几个小时后,addValueEventListener 似乎并没有添加监听器。解决此问题的唯一方法是注销并重新登录。

编辑:

我的身份验证状态监听器代码:

firebaseAccount = getFirebaseAccount();
firebaseAccount.getAuth().addAuthStateListener(firebaseAccount.getAuthListener());

在 firebaseAccount 中:

public FirebaseAuth.AuthStateListener getAuthListener() {
return authStateListener;
}

FirebaseAuth.AuthStateListener authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
String id = firebaseUser.getUid();
// User is signed in
Log.e(TAG, "onAuthStateChanged: Signed in as " + id);
// Start loginActivity when signed in
loginActivity.onLoginSuccess(id);
} else {
// User is not signed in
Log.e(TAG, "onAuthStateChanged: Signed out");

// User probably logged out. Finish the loginActivity and launch the login screen
}
}
};

最佳答案

此问题是由于 Firebase Auth token 未正确刷新自身引起的,这本身是由您的 Firebase 项目中的潜在错误配置引起的。

您可以通过在用户登录后调用以下代码 fragment 来判断 token 刷新是否失败:

FirebaseUser user = mAuth.getCurrentUser(); // mAuth is your current firebase auth instance
user.getToken(true).addOnCompleteListener(this, new OnCompleteListener<GetTokenResult>() {
@Override
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()) {
Log.d(TAG, "token=" + task.getResult().getToken());
} else {
Log.e(TAG, "exception=" +task.getException().toString());
}
}
});

(如果有问题,你会得到一个异常)。

可以关注this guide我们在 Firebase 团队中整合了这些内容,以解决和修复可能导致此问题的任何配置问题。

上述步骤应该是该问题的永久解决方案,但是,我们也在努力实现一种自动检测错误配置并为您透明地修复它们的方法。对于由此可能给您带来的任何问题,我们深表歉意。

关于android - Firebase addValueEventListener 只能工作几个小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37620081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com