我目前正在编写一个android应用。在我的应用中,用户可以对某些对象进行评分。数据(对象和等级)应存储在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
是签名的,因此我认为每次调用该方法都会有所不同。
大多数人所做的就是在数据库中创建一个用户目录。但是从应用程序中,我想获得用户评分以及给定对象的所有用户的总体平均评分。因此,我认为将评级分为多个用户表会使整体平均评级的计算复杂化。
我的问题是:如何将ObjectRating链接到用户,而又不使用不安全的方法,getId()
同时仍然能够通过objectId选择所有ObjectRatings以计算平均评分?
要获取用户的唯一标识符,可以使用FirebaseAuth
获取FirebaseUser
对象:
FirebaseAuth.getInstance().getCurrentUser().getUid();
该getUid()
方法:
返回一个字符串,该字符串用于在Firebase项目的用户数据库中唯一标识您的用户。在Firebase数据库或存储中,甚至在您自己的后端中存储信息时,请使用它。
在调用之前,您需要确保已使用GoogleSignInAccount
进行Firebase的身份验证getCurrentUser()
,否则它将返回null
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句