- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有人遇到过这个问题吗?我的 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/
有一条(相对)众所周知的 Perl 公理:“只有 Perl 可以解析 Perl”。我想知道 Perl 6 是否仍然如此? 扩大讨论...考虑到 PyPy 最近的更新,我想到了这个问题。 Perl 独特
这是设置。在上一个问题中,我发现我可以通过子组件中的状态传递对象属性,然后使用 componentDidUpdate 获取该对象属性。在这种情况下,状态和属性都称为到达。 这是基本代码... expo
我运行的是 10.5.2 社区版。我已经标记了 源/主要/资源 作为源目录。我可以右键单击并“编译”某些文件,据我所知,这意味着 IDE 将文件复制到与发送类文件的“com.mydomain.pack
我是一名优秀的程序员,十分优秀!