生成自定义令牌的firebase函数出错



我正在尝试实现一个Firebase函数,该函数为我的应用程序生成自定义令牌。但我不断收到以下错误消息:

错误:无法处理请求

否则会超时。

你知道以后我的代码可能出了什么问题吗?我正在用"测试"uid进行尝试。

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'
};
});
});

您的云功能是HTTPS功能。为了终止它,您需要调用res.redirect()res.send()res.end(),如文档中所述。

在您的代码中,您实际上返回了Promises链:这是终止由后台事件触发的云函数的正确方式(HTTPS云函数不是由对其公开的URL的调用触发的(。

因此,以下更改应该起作用(未经测试(:

exports.customFunction = functions.https.onRequest((req, res)(data, context) => {
admin.auth().createCustomToken('test')  // No need to return 
.then(customToken => {
console.log(`The customToken is: ${customToken}`);
response.status(200).send({
status: 'success', 
customToken: customToken
});
})
.catch(error => {
console.error(`Something happened buddy: ${error}`)
response.status(500).send(error);
});
});

请注意,对于HTTPS云函数,传递给处理程序的对象不是Firebasedatacontext对象,而是Express.jsrequestresponse对象。

所以写更清楚

exports.customFunction = functions.https.onRequest((req, res) => {...});

而不是

exports.customFunction = functions.https.onRequest((data, context) => {...});

相关内容

  • 没有找到相关文章

最新更新