exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => {
console.log(user.uid);
console.log(user.email);
console.log(user.displayName);
});
exports.getUserInfo = functions.https.onCall(async (data, context) => {
// get array of user IDs and returns information (from Users collection)
const userIDs = data.userIDs;
const result = [];
const querySnapData = await admin.firestore().collection("Users").get();
querySnapData.forEach((ele) => {
if (userIDs.indexOf(ele.id) !== -1 && ele.id !== context.auth.uid) {
result.push(ele.data());
}
});
return { res: result };
});
我的项目中有这两个函数-一个是可调用函数,另一个是auth触发函数。
因此,在我的客户端应用中,我运行
firebase.functions().useFunctionsEmulator('http://localhost:5001');
let getUserInfo = functions.httpsCallable('getUserInfo');
getUserInfo({userIDs: data}).then(res => doSomething);
并在本地运行云功能
firebase emulators:start
但是它说
functions[sendWelcomeEmail]: function ignored because the auth emulator does not exist or is not running.
因此,在客户端应用中,getUserInfo
运作良好,但无法触发onCreate
。
但是我找不到关于auth emulator
的任何文档。
赞赏任何链接/文章/视频或答案。
答案 0 :(得分:6)
Firebase仿真器套件当前可将Firestore,实时数据库,云功能和云发布/订阅云化。它尚未模拟Firebase身份验证API。因此,您所做的任何身份验证调用都将针对与模拟器关联的真实项目执行。
这也意味着您的functions.auth.user().onCreate((user) => {
云功能目前不会在模拟器中触发。您必须将其部署到服务器上才能测试此触发器。
要了解何时可以使用身份验证模拟器,我建议您留意Firebase的release notes和列出支持产品的main documentation page for the emulator suite。您也可以在提交或本feature request中更紧密地关注Github。
答案 1 :(得分:1)
firebase最近发布了身份验证模拟器,您可以在以下发布说明中检查它:https://firebase.google.com/support/releases#october_26_2020,并在此处进行进一步的指导:https://firebase.google.com/docs/emulator-suite/connect_auth
答案 2 :(得分:0)
因此,正如@Franek van Puffelen上文所述,它尚未完成。
能够像下面那样在本地测试身份验证功能。
function sendWelcomeEmail(user) {
console.log(user.uid);
console.log(user.email);
console.log(user.displayName);
}
exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => sendWelcomeEmail(user));