node.js - 为什么 Cloud Functions 日志消息为空?

标签 node.js firebase firebase-authentication google-cloud-functions

我在我的 Firebase 控制台中设置了一个云函数,在 index.js 中包含以下内容。

const functions = require('firebase-functions');
const admin = require('firebase-admin');

const cors = require('cors');

const serviceAccount = require("./serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://**********.firebaseio.com"
});

const authCheck = (req, res) => {
  cors(req, res, () => {
    const tokenId = req.get('Authorization').split('Bearer ')[1];

    return admin.auth().verifyIdToken(tokenId)
      .then((decoded) => res.status(200).send(decoded))
      .catch((error) => res.status(401).send(error));
  });
};

module.exports = {
  authCheck: functions.https.onRequest(authCheck),
};

每当我尝试访问此 HTTPS 端点的 URL 时,云函数总是超时。我无法调试问题是什么,因为控制台中的日志是空行的形式。

enter image description here

最佳答案

Firebase 提供示例 cloud function on Github值得一看 - 它导入 cors。它使用附加参数导入它们;

const cors = require('cors')({
  origin: true,
});

我还没有看到云函数使用 module.exports - 它可能是有效的,但我只是没有看到它所以你的代码重构可能看起来像这样;

const functions = require('firebase-functions');
const admin = require('firebase-admin');

// You don't need to import the JSON file - Firebase has it's creds stored in `functions.config().firebase`
admin.initializeApp(functions.config().firebase);

const cors = require('cors')({ origin: true });

exports.authCheck = functions.https.onRequest((req, res) => {
  return cors(req, res, () => {
    const tokenId = req.get('Authorization').split('Bearer ')[1];

    admin.auth().verifyIdToken(tokenId)
      .then((decoded) => {
        console.log('Decoded', decoded);
        res.status(200).send(decoded);
      })
      .catch((error) => {
        console.error('Catching Error', error);
        res.status(401).send(error)
      });
  });
});

如果你运行它对日志记录有帮助吗?

关于node.js - 为什么 Cloud Functions 日志消息为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49506107/

相关文章:

swift - “不支持嵌套数组”FireStore Swift iOS

android - FirebaseAuth 为空

javascript - Mongoose 增量值不起作用

javascript - 如何保存页面对象以供以后使用?

node.js - 填充多个子文档

android - 如何知道用户使用我的应用程序时是否已经过了一定时间?

javascript - Firebase onAuthStateChanged 在登录时被调用两次

javascript - 如何从客户端扩展 Firebase 身份验证登录 session ?

Firebase 匿名身份验证和设备 ID

javascript - 服务员没有触发完成事件