Node.js 生成自定义令牌的firebase函数中出错
我正在尝试实现一个Firebase函数,为我的应用程序生成一个自定义令牌。但我一直收到以下错误消息: 错误:无法处理该请求 或者它以超时结束 你知道我的代码以后会出什么问题吗?我正在用“测试”uid进行测试Node.js 生成自定义令牌的firebase函数中出错,node.js,firebase,google-cloud-functions,Node.js,Firebase,Google Cloud Functions,我正在尝试实现一个Firebase函数,为我的应用程序生成一个自定义令牌。但我一直收到以下错误消息: 错误:无法处理该请求 或者它以超时结束 你知道我的代码以后会出什么问题吗?我正在用“测试”uid进行测试 const functions = require('firebase-functions'); const admin = require('firebase-admin'); const serviceAccount = require('./serviceAccountKey.json
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const serviceAccount = require('./serviceAccountKey.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
exports.customFunction = functions.https.onRequest((data, context) => {
return admin.auth().createCustomToken('test')
.then(customToken => {
console.log(`The customToken is: ${customToken}`);
return {
status: 'success',
customToken: customToken
};
})
.catch(error => {
console.error(`Something happened buddy: ${error}`)
return {
status: 'error'
};
});
});
你的云功能是一个很好的例子。要终止它,您需要调用res.redirect()
,res.send()
,或res.end()
,如中所述
在您的代码中,您实际上返回了承诺链:这是终止由后台事件触发的云函数的正确方法(HTTPS云函数不是通过调用其公开的URL触发的)
因此,以下更改应该可以做到这一点(未经测试):
请注意,使用HTTPS云函数,传递给处理程序的对象不是Firebase
数据
和对象,而是Express.js请求
和响应
对象
这样写起来就更清楚了
exports.customFunction = functions.https.onRequest((req, res) => {...});
而不是
exports.customFunction = functions.https.onRequest((data, context) => {...});
我认为OP在这里使用了
onRequest
而不是onCall
。剩下的语法和(数据,上下文)=>{}
的使用暗示了这一点。@samthecodingman您很可能是对的!让皮埃尔确认一下。
exports.customFunction = functions.https.onRequest((data, context) => {...});