带有Node.js的Firebase函数signInWithCustomToken未定义

时间:2016-09-13 21:11:40

标签: node.js firebase firebase-authentication

所以我已经创建了一个自定义令牌

const token = authRef.createCustomToken(options.userId, {
    app: appRootName,
    debug: !!options.debug
});

然后尝试签名

return authRef.signInWithCustomToken(token).then((user) => {
    return user;
});

自定义创建令牌成功,但signInWithCustomToken会吐出此错误。

TypeError: authRef.signInWithCustomToken is not a function

这是针对nodejs的Firebase 3,并且已设置了服务帐户。应用程序已正确初始化(或令牌生成首先不起作用),这里的问题是什么?

3 个答案:

答案 0 :(得分:3)

实际问题是

authWithCustomToken

存在于firebase中,而不存在于firebase-admin中,这在使用firebase安全功能时主要使用。

答案 1 :(得分:1)

我得到了同样的错误,希望以下代码可以解决您的问题 小心使用apiKey或serverKey

var firebase = require('firebase')
firebase.initializeApp({
    apiKey: '*******',
    databaseURL: 'https://*****.firebaseio.com'
})

var customToken = '*********'
firebase.auth().signInWithCustomToken(customToken).catch(function(error) {
    var errorMessage = error.message
    console.log(errorMessage)
})

答案 2 :(得分:0)

使用CI / CD管道部署时遇到同样的问题。从我当地直接部署到firebase时工作正常。两种方法都使用相同的令牌来部署。我使用的是firebase-admin最新版本,即5.11.0。

我找到的唯一解决方案是

  1. 将密钥设置为云功能配置,例如firebase functions:config:set custom.apikey=KEY_HERE
  2. 读取渲染页面的云功能内部的密钥,并设置为通过functions.config().firebase检索到的firebase配置,
  3. 顺便说一句,我们正在通过谷歌云功能托管的nextjs呈现网页。此呈现的页面与firebase firestore数据库通信。