【问题标题】:Firebase 3.3.x Nodejs - createUserWithEmailAndPassword is not a functionFirebase 3.3.x Nodejs - createUserWithEmailAndPassword 不是函数
【发布时间】:2017-01-13 19:52:02
【问题描述】:

我已经看到很多关于这个的问题,但让我感到困惑的是firebasedocumentation 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

获取默认 App 或给定 App 的 Auth 对象。

用法:

firebase.auth() firebase.auth(app)

所以我假设调用firebase.auth() 将返回firebase.auth.Auth,它应该包含createUserWithEmailAndPassword 函数。

注意

是的,我使用 firebase.initializeApp() 正确初始化了 firebase,它工作正常,我已经在做 database 事务 JSYK。

【问题讨论】:

    标签: node.js firebase firebase-authentication


    【解决方案1】:

    适用于 Node.js 的 Firebase SDK 可以在两种模式下工作(从 3.3 版开始):

    1. 作为服务器端 SDK,当您将其初始化为服务帐户时会发生这种情况

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

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

    2. 作为客户端 SDK,在您初始化它时会使用 API 密钥

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

      如果您使用 API 密钥进行初始化(仅从 3.3 版开始可用),您会发现 client-side authentication methods 可用。

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

    var firebase = require("firebase");
    
    firebase.initializeApp({
      apiKey: "AI...Sc",
      databaseURL: "https://stackoverflow.firebaseio.com"
    });
    
    firebase.auth().createUserWithEmailAndPassword("nodeuser@firebaseui.com", "firebase")
        .then(user => console.log(user))
        .catch(error => console.error(error));
    

    详情请见this post on firebase-talk

    【讨论】:

    • 我在应用程序的初始化中删除了serviceAccount,它工作正常。谢谢弗兰克,这很有帮助。
    • 我其实也不知道它是如何工作的,所以弄清楚它很有趣。
    • 我还没有检查过,但我的猜测是,firebase.auth() 返回不同的对象,具体取决于用户/服务器是否经过身份验证。所以添加和/或删除serviceAccount 会导致它。再次感谢弗兰克。
    • 有没有办法让两者都初始化,我需要服务帐户用于其他一些仅限管理员访问的部分?
    猜你喜欢
    • 2018-11-25
    • 2016-09-27
    • 2017-05-17
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多