我可以在服务器上使用firebase客户端auth sdk吗?

问题描述 投票:0回答:1

当我有了客户端-服务器模型时,我试图弄清楚 Firebase 是如何工作的。通常客户端向服务器执行登录/注册请求。 Firebase 文档 https://firebase.google.com/docs/auth/web/start?hl=en&authuser=0 显示了如何注册/登录,但代码是否适用于客户端?其他来源建议这样做,但我可以在服务器端运行“createUserWithEmailAndPassword”和“signInWithEmailAndPassword”吗?

我的服务器(用express和node编写)现在看起来像这样:

import { initializeApp as adminInitializeApp, applicationDefault} from 'firebase-admin/app';

import { initializeApp } from "firebase/app";
import { getAnalytics } from "firebase/analytics";
const firebaseConfig = {
};

// Initialize Firebase
const fireApp = initializeApp(firebaseConfig);
const fireAppAdmin = adminInitializeApp({
    credential: applicationDefault(),
});

// const analytics = getAnalytics(fireApp);

import { getAuth, createUserWithEmailAndPassword } from "firebase/auth";

const auth = getAuth();

.....

app.post("/auth/register", async (req, res) => {
    createUserWithEmailAndPassword(auth, req.body.email, req.body.password)
    .then((userCredential) => {
        // Signed up 
        const token = userCredential.user.getIdToken();
        res.status(200).send({
            token,
        });

我需要管理员来验证从客户端发回的令牌。这是正确的做法吗?

node.js firebase firebase-authentication
1个回答
0
投票

我可以在服务器端运行“createUserWithEmailAndPassword”和“signInWithEmailAndPassword”吗?

是的,可以。但它们并不打算以这种方式使用。这些应该从客户端使用,而不是从服务器使用。

这仅取决于您的用例。例如,您可以:

A) 使用客户端的

createUserWithEmailAndPassword
。在服务器端设置一个 auth 触发器,以便您可以侦听用户创建事件并对其做出反应(例如发送欢迎电子邮件)。

B) 如果您不想允许用户从客户端创建自己的帐户,您可以创建一个端点(例如,使用“可调用函数”),以便您的客户端向服务器发送请求。然后,服务器验证并执行您需要的任何操作,最终创建身份验证用户帐户(从服务器,使用 Firebase Admin SDK 在 Firebase 身份验证服务中创建用户)。 在这两种情况下,您最终都会在 Firebase Auth 服务中获得一个新用户。

© www.soinside.com 2019 - 2024. All rights reserved.