我想我有一个非常基本的问题,但由于糟糕的教程和奇怪的结果,我真的遇到了这个问题。 因此,我从这里https://cloud.google.com/solutions/mobile/firebase-app-engine-android-studio#adding_and_removing_to-do_items_from_the_mobile_app遵循了有关如何使用Android的Firebase用户身份验证和数据库的教程。现在我只想让用户在我的数据库中写入自己的节点。我的数据应如下所示:
shoppinglistplusplus-ss
--> users
--> several nodes with Firebase Uids.
我对此数据库的规则如下:
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}.
现在数据库是完全空的。我正在使用Facebook登录,因此我将Facebook的访问令牌传递给Firebase。在我的Android应用程序中,我尝试使用以下代码写入它:
AuthCredential credential = FacebookAuthProvider.getCredential(AccessToken.getCurrentAccessToken().getToken());
mAuth.signInWithCredential(credential).addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
new Firebase("https://shoppinglistplusplus-ss.firebaseio.com")
.child("users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue("bub bub bub");
}
}
});.
所以整个代码都在运行。不幸的是,我在网上看到我的数据库中出现的任何数据。现在这里有一个奇怪的部分。如果我使用模拟器验证我的规则,我会得到积极的反馈。此外,当我将数据库规则切换为公共时,我看到数据即将出现。
此外,我在此处看到了另一种写入数据库的方法https://firebase.google.com/docs/database/android/start/。无论如何使用它给了我一个例外,因为我不知道如何设置我的Firebase网址。
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Hello, World!");.
我做错了什么?有什么建议吗?