2016-09-06 182 views
4

我已經看到了很多關於這個問題,但什麼混淆我是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火力初始化。

回答

7

的火力地堡的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://stackoverflow.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',它工作正常。謝謝弗蘭克,這是很多的幫助。 <3 – CENT1PEDE

+0

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

+0

我還沒有檢查過,但我的猜測是,'firebase.auth()'返回不同的對象,取決於用戶/服務器是否通過身份驗證。所以添加和/或刪除'serviceAccount'會導致它。 再次感謝弗蘭克。 – CENT1PEDE