Firebase身份验证(不是函数,不是构造函数)

时间:2016-07-05 09:38:49

标签: node.js firebase firebase-authentication

我不知道出了什么问题。我正在使用Node.js并尝试使用电子邮件/密码和Google身份验证登录。我在Firebase控制台中启用了所有这些功能。

npm Firebase版本 - 3.1.0

代码的一部分:

rejected

错误:firebase.auth(...)。signInWithLoginAndPassword不是函数 要么 错误:firebase.auth(...)。当我写

时,GoogleAuthProviders不是构造函数
var firebase = require('firebase');

var config = {
  apiKey: "AIzaSyAH27JhfgCQfGmoGTdv_VaGIaX4P-qAs_A",
  authDomain: "pgs-intern.firebaseapp.com",
  databaseURL: "https://pgs-intern.firebaseio.com",
  storageBucket: "pgs-intern.appspot.com",
};

firebase.initializeApp(config);

app.post('/login', function(req, res) {
  var auth = firebase.auth();

  firebase.auth().signInWithEmailAndPassword(req.body.login, req.body.password).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    // ...
  });
}

我刚刚完成了文档中的内容。

4 个答案:

答案 0 :(得分:1)

你的第一个错误可能来自某个地方的拼写错误。

firebase.auth(...).signInWithLoginAndPassword is not a function

注意它表示signInWith 登录 AndPassword,该函数名为signInWith 电子邮件 AndPassword。在发布的代码中,它被正确使用,因此它可能位于其他地方。

firebase.auth(...).GoogleAuthProviders is not a constructor

您尚未在使用此处的位置发布代码,但我认为您在provider

中创建firebase.auth().signInWithPopup(provider)变量时会发生此错误

该行应为var provider = new firebase.auth.GoogleAuthProvider();

根据错误消息,我认为你可能正在new firebase.auth().GoogleAuthProvider();在auth之后省略括号,如果是这样的话。

答案 1 :(得分:1)

无法使用电子邮件+密码或其中一个社交提供商将您的node.js应用程序签名到firebase中。

服务器端流程使用所谓的服务帐户登录Firebase。关键区别在于您初始化应用程序的方式:

var admin = require('firebase-admin');
admin.initializeApp({
  serviceAccount: "path/to/serviceAccountCredentials.json",
  databaseURL: "https://databaseName.firebaseio.com"
});

请参阅Firebase documentation for details on setting up a server-side process的此页面。

答案 2 :(得分:1)

请勿通过Auth()函数调用GoogleAuthProvider。

根据文档,您必须创建一个GoogleAuthProvider实例。

let provider = new firebase.auth.GoogleAuthProvider()

请检查以下链接https://firebase.google.com/docs/auth/web/google-signin

答案 3 :(得分:0)

我也通过添加此错误来解决它 auth 要求。

const firebase = require("firebase/app");
require("firebase/auth");
...
var provider = new firebase.auth.GoogleAuthProvider();