【问题标题】:Firebase save data user relatedFirebase 保存数据用户相关
【发布时间】:2018-03-25 11:24:00
【问题描述】:

我目前正在编写一个安卓应用程序。在我的应用程序中,用户可以对某些对象进行评分。数据(对象以及评级)应存储在 Google Firebase 中,尤其是 Firestore。 我已经将我的应用链接到 Firebase 并实现了 com.google.android.gms.auth.api.signin 以获取当前用户的 GoogleSignInAccount


我想将数据保存到数据库中:

SomeObject: | objectId | name |

ObjectRating: | ratingId | objectId | userId | rating |

我不确定的是,将什么保存为 userId。 GoogleSignInAccount.getId() 的文档说:

重要提示:请勿使用此返回的 Google ID 将当前登录的用户与您的后端服务器通信。相反,发送一个 ID 令牌 (requestIdToken(String)),它可以在服务器上安全地验证;或者发送一个服务器验证码 (requestServerAuthCode(String)) 可以反过来交换 id 令牌。

所以我可能不应该使用它。但是推荐的IdToken是签名的,所以我觉得每次调用方法都会不一样。

大多数人所做的就是在数据库中创建一个用户目录。但是从应用程序中,我想获得用户评分以及所有用户对给定对象的总体平均评分。因此,我认为将评分拆分到多个用户表中会使总体平均评分的计算变得复杂。

我的问题是:如何在不使用不安全的getId() 的情况下将 ObjectRating 链接到用户,同时仍然能够通过 objectId 选择所有 ObjectRatings 来计算平均评分?

【问题讨论】:

  • 为什么这么复杂?为什么不使用 Firebase Auth 而不是 Google 登录?如果使用 Firebase-UI 会更容易
  • 尝试从 Firebase Auth 获取 userId!

标签: android firebase firebase-realtime-database firebase-authentication google-signin


【解决方案1】:

要获取用户的唯一标识符,您可以使用FirebaseAuth 来获取FirebaseUser 对象:

FirebaseAuth.getInstance().getCurrentUser().getUid();

getUid() 方法:

返回一个字符串,用于在 Firebase 中唯一标识您的用户 项目的用户数据库。在 Firebase 中存储信息时使用它 数据库或存储,甚至在您自己的后端。

在调用getCurrentUser()之前,你需要确保你已经used the GoogleSignInAccount to authenticate with Firebase,否则它会返回null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    相关资源
    最近更新 更多