将 Firebase 身份验证用户映射到 Firestore 文档
Posted
技术标签:
【中文标题】将 Firebase 身份验证用户映射到 Firestore 文档【英文标题】:Mapping Firebase Auth users to Firestore Documents 【发布时间】:2018-03-19 05:41:32 【问题描述】:我正在尝试使用 Firebase 的 Firestore
数据库在我的 android 应用中处理 User
s。
最初我想使用从Auth
包(字符串)返回的id,并将其设置为数据库中users
Collection
的id。在Collection
users
内创建Document
时,我将uid
字段设置为该身份验证包字符串。
我意识到没有办法将该字符串设置为可索引的值,以便查询如下:
// get Auth package uid string
db.collection("users").document(auth_uid_string);
会起作用的。
因此,我想,另一种选择是使用Query.whereEqualTo("uid", auth_uid_string)
,这将给我一个列表中的用户,因为 firestore 不假定查询是针对唯一值的。
我想避免上述解决方案,并设计一种方法将应用程序的users
存储在firestore
中,并使用auth
包来验证我是否获取了正确的用户。这样的解决方案可能吗?或者我应该尝试不同的 firebase 服务,或者甚至只是在 heroku 中运行 postgres 服务器或其他什么?
【问题讨论】:
【参考方案1】:我不确定如何在 android 中执行此操作,但使用 JS 我正在执行以下操作:
firebase.firestore().collection('users').doc(currentUser.uid).set(currentUser)
currentUser
是认证函数返回的用户对象(我用signInWithCredential
)
它运行良好。我相信你可以在 android 中实现类似的方法。
【讨论】:
是的,所以我可以使用set
设置索引。谢谢
我不确定这是否是 Firebase 明确表示的最佳方法: // 用户 ID,Firebase 项目独有。 // 不要使用这个值来验证你的后端服务器, // 如果你有的话。使用 getTokenWithCompletion:completion: 代替。
@JoseTapizquent 这是为了使用您的后端服务器进行身份验证,正如评论明确提到的那样。可以使用用户 ID 来声明文档。
我不确定这是否仍然有效。我不认为currentUser
是可序列化的。我得到FirebaseError: Function DocumentReference.set() called with invalid data. Data must be an object, but it was: a custom Q object
以上是关于将 Firebase 身份验证用户映射到 Firestore 文档的主要内容,如果未能解决你的问题,请参考以下文章
我是 Flutter Web 的新手,如何使用 Firebase 电话身份验证对用户进行身份验证,有没有办法让用户保持登录状态?
Firebase linkwithcredential 不适用于 Facebook
为啥注册用户未在 Firebase 中进行身份验证?为啥用户不能将产品添加到数据库 Firebase?
将 Wordpress 用户导入 Firebase 身份验证