Wak*_*ero 1 facebook unity-game-engine firebase firebase-realtime-database
如何将Facebook朋友ID映射到实时数据库中的Firebase uid?据我了解,Firebase uid与Facebook id不同。
我当前的用户流是通过Facebook sdk登录到Facebook,然后将Facebook访问令牌传递到Firebase sdk以使用Firebase登录。
我的最终目标是存储游戏分数,以便用户可以看到他们的朋友以及他们自己的分数。我不想为每个玩家要求每个分数并在客户端上过滤此信息。我宁愿发送X个查询,查询X个朋友,只请求所需的分数。
不知道什么是downvote,但是这是我最终使用的解决方案。
通过facebookId而不是firebaseId来存储分数可以查找朋友的分数,因为将facebookId映射到firebaseId不能将其存储在数据库中。看起来像这样:
facebookUsers {
facebookId {
"firebaseId" : firebaseId,
"scores" : {
level : score,
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过此结构,您可以轻松地按facebookId查找分数,如果需要其他操作,还可以将facebookId映射到firebaseId。
要保存分数:
FirebaseDatabase.DefaultInstance
.GetReference("facebookUsers")
.Child(facebookId)
.Child("scores")
.Child(level)
.SetValueAsync(score);
Run Code Online (Sandbox Code Playgroud)
要查找分数:
FirebaseDatabase.DefaultInstance
.GetReference("facebookUsers")
.Child(facebookId)
.Child("scores")
.Child(level)
.GetValueAsync();
Run Code Online (Sandbox Code Playgroud)
要限制基于facebookId的写入,请使用以下规则:
{
"rules": {
".read": "auth != null",
"facebookUsers": {
"$facebookId" : {
".write": "data.child('firebaseId').val() == auth.uid || (!data.exists() && newData.child('firebaseId').val() == auth.uid)",
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助某人,而不是不赞成投票的人。
| 归档时间: |
|
| 查看次数: |
632 次 |
| 最近记录: |