我正在将ReactJS与Firebase一起使用来创建函数。我的动机是创建用户注册功能。以下是它的代码。
app.post( '/signup', (req, res)=> {
const newUser = {
email : req.body.email,
password : req.body.password,
confirmPassword : req.body.confirmPassword,
handle : req.body.handle,
};
firebase.auth().createUserWithEmailAndPassword('newUser.email', 'newUser.password')
.then((data)=>{
return res.json({message: `user signed up successfully`});
} ).catch( (err) => { console.error(err); return res.json({error : err.code}) } );
} )
它还需要使用具有适当凭据的Firebase初始化。我在下面包含的代码:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const app = require('express')();
const firebase = require('firebase');
const firebaseConfigg = {
apiKey: "A*************************s",
authDomain: "socialape-9ede9.firebaseapp.com",
databaseURL: "https://socialape-9ede9.firebaseio.com",
projectId: "socialape-9ede9",
storageBucket: "socialape-9ede9.appspot.com",
messagingSenderId: "105*****9789",
appId: "1:1054747689789:web:075f037f03b59627edfb54",
measurementId: "G-ZY1LNR052N"
};
admin.initializeApp();
firebase.initializeApp(firebaseConfigg);
当我尝试运行firebase deploy
时,firebase函数日志显示此错误:
如何解决此错误?我一直在关注这个YouTube教程链接:Youtube social networking website tutorial with react and firebase,大约42.55分钟,该人使用Firebase身份验证,并在项目设置中复制了一个代码,这对我来说似乎是不同的(显然我不希望使用相同的api键等,但格式实际上要求我添加一个Web应用程序,但不是在教程中)。当我执行完全相同的步骤时,对于我来说,代码段看起来像我在上面代码段中提供的const firebaseconfig
一样。
我的VS代码说:
错误:功能未正确部署。
答案 0 :(得分:1)
在Cloud Function中,如果要与Firebase服务之一(Auth,Firestore,Cloud Storage等)进行交互,则需要使用Admin SDK。
因此,您需要对代码进行如下修改:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const app = require('express')();
admin.initializeApp();
//...
app.post( '/signup', (req, res)=> {
const newUser = {
email : req.body.email,
password : req.body.password,
// see https://firebase.google.com/docs/reference/admin/node/admin.auth.UserRecord
};
admin.auth().createUser(newUser)
.then((data)=> {
return res.send({message: `user signed up successfully`});
})
.catch((err) => {
console.error(err);
return res.status(500).send({error : err.code}) });
});
另请参阅https://firebase.google.com/docs/auth/admin/manage-users?authuser=0#create_a_user。