【问题标题】:Mapping Facebook friend id to Firebase uid in realtime database在实时数据库中将 Facebook 好友 ID 映射到 Firebase uid
【发布时间】:2016-12-01 09:14:49
【问题描述】:

如何将 Facebook 好友 ID 映射到实时数据库中的 Firebase uid?据我了解,Firebase uid 与 Facebook id 不同。

我当前的用户流程是通过 Facebook sdk 登录 Facebook,然后将 facebook 访问令牌传递给 Firebase sdk 以使用 Firebase 登录。

我的最终目标是存储游戏分数,以便用户可以看到他们朋友的分数以及他们自己的分数。我不想要求每个玩家的每个分数并在客户端上过滤此信息。我宁愿发送 X 查询 X 数量的朋友,只请求所需的分数。

【问题讨论】:

  • 您想让 FacebookId 成为 Firebase 用户的属性吗?我管理它的方法是在数据库对象中有一个名为“FacebookID”的属性。
  • 我想过像这样将 FacebookId 存储在数据库中。这将让我使用我已经拥有的 Facebook id 对每个 $uid 进行查询,然后使用该 $uid 来查找分数。有没有人有更好的解决方案? fbusers { $fbid { $uid } }

标签: facebook unity3d firebase firebase-realtime-database


【解决方案1】:

不确定投反对票的目的是什么,但这是我最终使用的解决方案。

通过 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)",
      }
    }
  }
}

希望这能帮助的不仅仅是投反对票。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    相关资源
    最近更新 更多