如何将Firebase管理员身份验证添加到React应用.env?

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

好问题,

要从firebase添加google auth以进行管理员访问,首先需要从firebase获得.json文件,可以从具有auth设置的管理面板中获取它。>

enter image description here

转到服务帐户生成并下载JSON

enter image description here

您希望如何在文件中使用它...例如我的管理路线

//Use dotenv to read .env vars into Node
require('dotenv').config();

const express = require('express');
var router = express.Router();

// Schema import
const postModel = require('../models/postModel');
const userModel = require('../models/userModel');

// parse json to use in all requests got or sent by router .. which is provided by express
router.use(express.json());

// Initialize the default app

var admin = require('firebase-admin');

admin.initializeApp({
    credential: admin.credential.cert({
  "type": process.env.FIREBASE_TYPE,
  "project_id": process.env.ID,
  "private_key_id": process.env.FIREBASE_PRIVATE,
  "private_key": process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n'),
  "client_email": process.env.FIREBASE_CLIENT_EMAIL,
  "client_id": process.env.FIREBASE_CLIENTID,
  "auth_uri": process.env.FIREBASE_AUTHURI,
  "token_uri": process.env.FIREBASE_TOKEN,
  "auth_provider_x509_cert_url": process.env.FIREBASE_AUTH_PROVIDER,
  "client_x509_cert_url": process.env.FIREBASE_FIREBASE_CLIENT
}),
databaseURL: process.env.FIREBASE_DATABASE
});





console.log(process.env.ID)


router.post('/', (req, res, next) => {
    const admin_uid = req.body.uid;

    if (admin_uid === process.env.ADMIN_URI) {
        // // users email

        const email = req.body.email;

        admin
            .auth()
            .getUserByEmail(email)
            .then(function(userRecord) {
                // See the UserRecord reference doc for the contents of userRecord.
                console.log('Successfully fetched user data:', userRecord.toJSON());
                // res.json(userRecord.toJSON())

                admin.auth().updateUser(userRecord.uid, { disabled: true }).catch((error) => res.json(error));
            })
            .catch(function(error) {
                console.log('Error fetching user data:', error);
                // res.json(error)
            });

        // delete the posts of the user and the user

        postModel.deleteMany({ author: email }, (error, returnedDocuments) => {
            if (error) return next(error);

            userModel.findOneAndDelete({ email: email }, (error, returnedDocuments) => {
                if (error) return next(error);
                res.json(`User  ${email} deleted ...Posts from ${email} deleted`);
            });
        });
    } else {
        res.json('failure, admin ops');
    }
});

module.exports = router;

在您的.env中,它必须位于前端,否则react无法获取密钥,因此您将需要2 .env,一个用于客户端,一个用于服务器,在react .env中执行此操作

enter image description here

祝您好运,如果您愿意的话,请添加注释以改善。

很好的问题,要从firebase添加google auth以进行管理员访问,首先需要从firebase中添加.json文件,您可以从管理面板上获取该文件,并在其中通过auth设置进入该服务...

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

祝您好运,如果您愿意的话,请添加注释以改善。

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