我正在尝试将新用户记录插入我的Firebase数据库:
databaseReference
.child("users")
.child(firebaseUser.getUid())
.setValue(User.fromFirebaseUser(application.firebaseUser))
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
startActivity(MainActivity.createIntent(SplashActivity.this));
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
showSnackbar(R.string.error_user_registration_failed);
}
})
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.d(TAG, "complete");
}
});
但没有任何反应。没有来自logcat的消息,也没有任何一个侦听器被击中。
我的权限是默认权限(必须经过身份验证)并且我确定了我的权限。在数据库调用之前调用firebaseUser.getUid()
会按预期返回当前的userId。
我已经检查了所有依赖项,并确保我的google-services.json文件是最新的。
我已尝试通过firebaseDatabase.setLogLevel()
启用调试,但出于某种原因,Logger.Level
不包含枚举(它们会被混淆?)
我错过了什么吗?
答案 0 :(得分:2)
启用调试后(感谢Bob Snyder)它给了我一个错误。
基本上你需要启用&#34;令牌服务API&#34;在Google Developer console中。我不确定为什么以及如何与FirebaseDatabase相关,我无法在整个Google的文档中找到任何对它的引用,但它确实有效。
答案 1 :(得分:0)
我在读取用户数据时遇到了同样的问题。
我将数据库规则更改为:
{
"rules": {
".read": true,
".write": true
}
}
它确实有效,但是请确保在更改和发布新规则后先杀死该应用程序。
注意:这些规则仅用于测试,切勿为发布的应用保存