我正在测试FB文档(https://firebase.google.com/docs/functions/callable)中描述的一个非常简单的实现,但它无效。
这是 Firebase功能部署到云端:
exports.getRecSkills = functions.https.onCall((data, context) => {
return {text: data.text};
});
...和我的客户电话(初始化FB后):
var getRecSkills = firebase.functions().httpsCallable('getRecSkills');
getRecSkills({text: '123'}).then(function(result) {
console.log(result);
}).catch(function(error) {
console.log(error.code);
console.log(error.message);
});
我收到了与CORS标题相关的问题,但在文档中,它没有提到对CORS的需求......我错过了什么?
一些注意事项:
已经挣扎了很长时间......请帮助!
答案 0 :(得分:1)
我最近遇到了同样的问题,但是在我的配置对象中包含了“ projectId”之后就解决了。以下是Java版Firebase配置对象的代码段。确保所有字段都已填入配置对象中,并且应该可以解决您未定义的问题。
var config = {
apiKey: "<API_KEY>",
authDomain: "<PROJECT_ID>.firebaseapp.com",
databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
projectId: "<PROJECT_ID>",
storageBucket: "<BUCKET>.appspot.com",
messagingSenderId: "<SENDER_ID>",
};
答案 1 :(得分:0)
如果遇到CORS
问题,并且正在使用express
来公开API函数,则必须允许cors:
import * as cors from 'cors';
import * as express from 'express';
const corsHandler = cors({origin: true});
const app = express();
app.use(corsHandler);
app.post('/createUser', async (request, response) => {
await createUser(request, response);
});
exports.api = functions.https.onRequest(app);
答案 2 :(得分:0)
要摆脱if name in ("Alice", "Bob"):
错误,请确保您的CORS
具有以下firebase.json
:
headers
如果您在本地设备上的 Firebase Emulator 上运行,请确保在初始化Firebase功能后具有以下条件,否则本地设备仍将调用远程Firebase功能,并且您会再次遇到"hosting": [
{
"headers": [
{
"source": "**",
"headers": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
}
]
}
]
}
]
错误:
CORS