我正在制作应用,但我遇到了Firebase数据库和身份验证服务的问题。
过了一段时间,当我通过身份验证(使用Firebase Auth)并使用我的应用程序时,我的数据库ValueEventListener似乎没有被调用,即使数据库中有 数据。
我如何添加我的听众:
FirebaseDatabase
.getInstance()
.getReference()
.child("my_child")
.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
Log.d("App", "onDataChange");
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
我试过的东西:
非常感谢任何帮助。
答案 0 :(得分:3)
所以,显然问题是我的Google API信息中心没有启用名为“令牌服务”的API。
感谢来自Firebase支持的有用电子邮件(谢谢大家!),我通过调用D/PersistentConnection: pc_0 - Error fetching token: An internal error has occurred. [ �Token Service API has not been used in project <project-id> before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/securetoken.googleapis.com/overview?project=<project-id> then retry.
启用了调试日志记录
瞧瞧:{{1}}
因此,通过启用API,它似乎修复了错误!
答案 1 :(得分:1)
创建对子数据库的引用,根据您的要求创建自定义Chat类(基本上是您在firebase中看到的)。 addChildEventListener应该为您提供my_child发生的所有更改。希望这会对你有所帮助。
mFirebaseRef = new Firebase("https://yourapp.firebaseio.com/").child("my_child");
/**
* Firebase - Receives message
*/
mFirebaseRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot != null && dataSnapshot.getValue() != null) {
try{
Chat model = dataSnapshot.getValue(Chat.class);
mChats.add(model);
mRecyclerView.scrollToPosition(mChats.size() - 1);
mAdapter.notifyItemInserted(mChats.size() - 1);
} catch (Exception ex) {
Log.e(TAG, ex.getMessage());
}
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
&#13;