从服务器登录用户的Firebase Admin SDK

Osa*_*ãñz 1 node.js firebase firebase-authentication firebase-admin

我一直在Node JS代码中使用Firebase Admin SDK从服务器端对用户进行身份验证。

Admin SDK提供了一种admin.auth().createUser()创建新用户的方法。

admin.auth().createUser({
        email,
        password,
        displayName: name
    })
    .then(function(user) {
        console.log("Successfully created new user:", user.uid)
        return res.send(user)
    })
    .catch(function(err) {
        console.log("Error creating new user:", err)
        return res.send(err)
    })
Run Code Online (Sandbox Code Playgroud)

但是现在如何像auth.signInWithEmailAndPassword(email, pass)Firebase Client SDK中的方法那样使用户登录。

firebase admin SDK上有一种方法可以通过Email获取用户信息admin.auth().getUserByEmail(email)。此方法返回所有用户信息,包括密码,但该密码被散列。因此,现在有任何变通办法可以从Server获得适当的身份验证用户。

Fra*_*len 9

无法使用 Admin SDK 登录用户。Admin SDK 以管理权限运行,无需登录。

您需要使用 Firebase 客户端 SDK 之一(例如,适用于 Android、iOS 或 Web 用户)让您的用户直接从客户端代码登录到 Firebase。

如果您希望服务器端代码知道哪个用户登录,则可以将令牌从客户端发送到服务器,然后在服务器上对其进行解码和验证。请参阅有关验证 ID 令牌的文档以及使用 Cloud Functions 进行服务器端身份验证的示例

  • 根据 https://bundlephobia.com,firebase 库压缩后大小为 214kb。如果您只想登录,那么这非常重要。我真的很失望,这在服务器端是不可能的。 (2认同)

小智 7

我的评论有点晚了,但一种选择是直接使用Firebase REST API,但集成到您自己的服务器端API中进行身份验证。然后结合使用它和Admin SDK将其全部打包。REST API文档可在https://firebase.google.com/docs/reference/rest/auth/#section-sign-in-email-password中找到。您可以通过自己的API减轻客户端的负担,并包装所有Firebase身份验证内容,自定义声明,登录,注销等。您只需要使用两种方法即可。这将使您摆脱应用程序和API中的任何依赖关系,就像将它们全都放在一个服务提供商中一样。值得深思。

  • 有人知道这在 firebase 云功能中是否可能/推荐吗? (4认同)