首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防火墙保存与用户相关的数据

防火墙保存与用户相关的数据
EN

Stack Overflow用户
提问于 2017-10-13 10:38:35
回答 1查看 966关注 0票数 2

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

我想将数据保存到数据库中,如下所示:

代码语言:javascript
运行
复制
SomeObject: | objectId | name |

ObjectRating: | ratingId | objectId | userId | rating |

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

注意:不要使用此返回的Google将当前已登录的用户与后端服务器通信。相反,发送一个ID令牌(requestIdToken(String)),它可以在服务器上安全地验证;或者发送服务器auth代码(requestServerAuthCode(String)),该代码可以依次交换为id令牌。

所以我不应该用这个。但是推荐的IdToken是签名的,所以我认为每次调用该方法时都会有所不同。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-13 10:55:51

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

代码语言:javascript
运行
复制
FirebaseAuth.getInstance().getCurrentUser().getUid();

getUid()方法:

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

在调用 to authenticate with Firebase之前,需要确保您已经拥有了getCurrentUser(),否则它将返回null

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46727967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档