如何使用 Firebase 身份验证服务并在我们自己的数据库中拥有用户?

Posted

技术标签:

【中文标题】如何使用 Firebase 身份验证服务并在我们自己的数据库中拥有用户?【英文标题】:How to use Firebase Authentication service and have user in our own database? 【发布时间】:2017-03-17 13:59:06 【问题描述】:

我有自己的node.js 服务器设置,所以我不需要 Firebase 存储和实时数据库服务。从客户端(主要是 android)我正在尝试使用 Firebase 身份验证服务(G+ 和 FB 登录)对用户进行身份验证,但这会在 firebase 数据库中创建用户。如何在我的数据库中创建用户?

目前,我只是将 Firebase 创建的用户 ID 发送到我的服务器并将其保存在数据库中并生成 JWT 以验证对我的服务器的后续 REST API 请求。

【问题讨论】:

【参考方案1】:

最终用户使用 Google/Facebook 登录后,您的客户端应用程序将返回 Firebase JWT token。每当您的应用需要向服务器发送 REST API 请求时,只需将 Firebase JWT 令牌附加到请求正文中即可。

在您的服务器上,您首先验证传入请求中的 Firebase 令牌。一旦 JWT 安全检查通过(签名、受众、到期等),您就可以提取令牌中的“子”字段(即 user_id),并且仅当 user_id 不在数据库中时才在您的数据库中创建用户记录还没有。

【讨论】:

我们如何在后端验证 Firebase 令牌? firebase 是否向我们提供了它使用的秘密,以便我们可以使用相同的秘密进行验证? 您可以使用 Firebase Admin SDK 或任何第三方 JWT 库来验证 Firebase 令牌:firebase.google.com/docs/auth/admin/… 这样有效率吗? 是的。 Firebase 令牌可以在您的服务器中进行本地验证。唯一涉及的 RPC 是从 Firebase 下载公共证书,该证书在几个小时内有效(并且可以缓存)。 我刚刚开始研究这个。在 Firebase 的 idToken 中,用于注册 Google/Facebook 的用户,解码后的令牌中是否有一个字段指定用户使用 Google/Facebook 注册,例如firebase.sign_in_provider 会是 Google/Facebook 吗?

以上是关于如何使用 Firebase 身份验证服务并在我们自己的数据库中拥有用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何存储firebase身份验证会话

如何将自定义消息添加到 Firebase Google 身份验证弹出窗口?

让用户使用 Firebase 登录(自定义 iOS 身份验证)

如果firebase没有身份验证,如何限制API密钥?

使用 php 设置 firebase v3 自定义身份验证

如何为 Firebase (Kotlin) 创建自定义身份验证