不知道downvote是什么,但这里是我最终使用的解决方案。
通过facebookId而不是firebaseId存储分数允许查找朋友分数,因为无论如何facebookId都无法映射到firebaseId,因此无法将其存储在数据库中。它看起来像这样:
facebookUsers {
facebookId {
"firebaseId" : firebaseId,
"scores" : {
level : score,
}
}
}
这种结构可以让你轻松地查找facebookId分数,如果需要进行其他操作也映射facebookIds到firebaseIds。
要保存得分:
FirebaseDatabase.DefaultInstance
.GetReference("facebookUsers")
.Child(facebookId)
.Child("scores")
.Child(level)
.SetValueAsync(score);
查找分数:
FirebaseDatabase.DefaultInstance
.GetReference("facebookUsers")
.Child(facebookId)
.Child("scores")
.Child(level)
.GetValueAsync();
要限制基于facebookId写入,请使用以下规则:
{
"rules": {
".read": "auth != null",
"facebookUsers": {
"$facebookId" : {
".write": "data.child('firebaseId').val() == auth.uid || (!data.exists() && newData.child('firebaseId').val() == auth.uid)",
}
}
}
}
希望这可以帮助别人更多比downvote。
是否要将FacebookId作为Firebase用户的财产?我将管理这个的方式是在数据库对象中有一个名为“FacebookID”的属性。 –
我想过如何将FacebookId存储在数据库中。这可以让我用我已经拥有的Facebook ID查询每个$ uid,然后使用该$ uid查找分数。有没有人有更好的解决方案? fbusers { $ fbid { $ uid } } – WakeZero