Plu*_*lum 6 node.js firebase-tools firebase-authentication google-cloud-functions
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 };
});
Run Code Online (Sandbox Code Playgroud)
我的项目中有这两个函数 - 一个是可调用函数,另一个是身份验证触发函数。
所以在我的客户端应用程序中,我运行
firebase.functions().useFunctionsEmulator('http://localhost:5001');
let getUserInfo = functions.httpsCallable('getUserInfo');
getUserInfo({userIDs: data}).then(res => doSomething);
Run Code Online (Sandbox Code Playgroud)
并在本地运行云功能
firebase emulators:start
Run Code Online (Sandbox Code Playgroud)
但它说
functions[sendWelcomeEmail]: function ignored because the auth emulator does not exist or is not running.
Run Code Online (Sandbox Code Playgroud)
所以在客户端应用程序中,getUserInfo工作得很好,但不能触发onCreate.
但是我找不到任何关于auth emulator.
任何链接/文章/视频或答案表示赞赏。
Firebase Emulator Suite 目前支持 Cloud Firestore、实时数据库、Cloud Functions 和 Cloud Pub/Sub。它尚未模拟 Firebase 身份验证 API。因此,您发出的任何身份验证调用都将针对与模拟器关联的真实项目执行。
这也意味着您的functions.auth.user().onCreate((user) => {Cloud Function 功能目前不会在模拟器中被触发。您必须将其部署到服务器以测试此触发器。
要了解身份验证模拟器何时可用,我建议您密切关注 Firebase 的发行说明以及列出受支持产品的模拟器套件的主文档页面。您还可以在 Github 上更密切地关注提交,或在此功能请求中。
正如 @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));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1822 次 |
| 最近记录: |