火力地堡3.3.x的NodeJS - createUserWithEmailAndPassword不是一个函数

火力地堡3.3.x的NodeJS - createUserWithEmailAndPassword不是一个函数

问题描述:

我已经看到了很多关于这个问题,但什么混淆我是firebaseXnodejsdocumentation有一个函数createUserWithEmailAndPassword()火力地堡3.3.x的NodeJS - createUserWithEmailAndPassword不是一个函数

每次我打印firebase.auth()它不仅具有这些功能:

{ 
    createCustomToken: [Function], 
    verifyIdToken: [Function], 
    INTERNAL:{ 
     delete: [Function], 
     getToken: [Function], 
     addAuthTokenListener: [Function], 
     removeAuthTokenListener: [Function] 
    } 
} 

而且,同一文档的NodeJS下,该firebase.auth()说:

AUTH(APP)返回firebase.auth.Auth

获取默认应用程序或给定应用程序的Auth对象。

用法:

firebase.auth()firebase.auth(APP)

所以我认为叫firebase.auth()将返回firebase.auth.Auth这理应包含createUserWithEmailAndPassword功能。

注意

是的,我用正确和firebase.initializeApp()这是正常工作,即时通讯已经在做database交易JSYK火力初始化。

的火力地堡的SDK的Node.js可以在两种模式(自3.3版本)工作:

  1. 作为服务器端的SDK,它发生在你初始化工作服务帐户

    firebase.initializeApp({ 
        serviceAccount: "myproject-3d9889aaeddb.json", 
        databaseURL: "https://myproject.firebaseio.com" 
    }); 
    

    如果您使用服务帐户进行初始化(在3.2版及之前版本中可用的唯一选项),您的连接将自动以管理员身份进行身份验证,并且您将只有admin auth functionality可用:创建和ve rifying自定义令牌。

  2. 作为客户端SDK,当你初始化它的工作重点

    firebase.initializeApp({ 
        apiKey: "myprojectsApiKey", 
        databaseURL: "https://myproject.firebaseio.com" 
    }); 
    

    如果您拥有API密钥(唯一可能的,因为3.3版本),你会发现初始化API,它发生可用client-side authentication methods

它只是验证了这一点在我自己的项目:

var firebase = require("firebase"); 

firebase.initializeApp({ 
    apiKey: "AI...Sc", 
    databaseURL: "https://*.firebaseio.com" 
}); 

firebase.auth().createUserWithEmailAndPassword("[email protected]", "firebase") 
    .then(user => console.log(user)) 
    .catch(error => console.error(error)); 

的全部细节见this post on firebase-talk

+0

我在应用程序的初始化中删除了'serviceAccount',它工作正常。谢谢弗兰克,这是很多的帮助。 CENT1PEDE

+0

我其实也不知道它是如何工作的,所以找出它很有趣。 –

+0

我还没有检查过,但我的猜测是,'firebase.auth()'返回不同的对象,取决于用户/服务器是否通过身份验证。所以添加和/或删除'serviceAccount'会导致它。 再次感谢弗兰克。 – CENT1PEDE