如何解决Firebase功能控制台中的“状态”:{“代码”:3,“消息”:“ INVALID_ARGUMENT”}错误?

时间:2020-05-23 12:22:24

标签: javascript reactjs firebase firebase-authentication google-cloud-functions

我正在将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函数日志显示此错误:

Firebase console log error

如何解决此错误?我一直在关注这个YouTube教程链接:Youtube social networking website tutorial with react and firebase,大约42.55分钟,该人使用Firebase身份验证,并在项目设置中复制了一个代码,这对我来说似乎是不同的(显然我不希望使用相同的api键等,但格式实际上要求我添加一个Web应用程序,但不是在教程中)。当我执行完全相同的步骤时,对于我来说,代码段看起来像我在上面代码段中提供的const firebaseconfig一样。 我的VS代码说:

错误:功能未正确部署。

1 个答案:

答案 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