好问题,
要从firebase添加google auth以进行管理员访问,首先需要从firebase获得.json文件,可以从具有auth设置的管理面板中获取它。>
转到服务帐户生成并下载JSON
您希望如何在文件中使用它...例如我的管理路线
//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中执行此操作
祝您好运,如果您愿意的话,请添加注释以改善。
很好的问题,要从firebase添加google auth以进行管理员访问,首先需要从firebase中添加.json文件,您可以从管理面板上获取该文件,并在其中通过auth设置进入该服务...
祝您好运,如果您愿意的话,请添加注释以改善。