我已在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时,云功能总是超时。我无法调试问题所在,因为控制台中的日志采用空白行的形式。
答案 0 :(得分:0)
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)
});
});
});
如果你运行它有助于记录?