如何将用户输入参数传递给我的云函数?
Posted
技术标签:
【中文标题】如何将用户输入参数传递给我的云函数?【英文标题】:How do I pass a user input parameter to my cloud function? 【发布时间】:2021-04-28 04:02:38 【问题描述】:我正在尝试了解 Cloud Functions for Firebase。我按照教程创建了一个身份验证触发器,效果很好,但现在我需要将用户想要使用的username
传递给我的身份验证事件。我该怎么做呢?我是否可能在这里使用了错误的触发器而需要一个 HTTP 触发器?
exports.newUserSignup = functions.auth.user().onCreate(user =>
console.log('user created', user.email, user.uid);
const doc = admin.firestore().collection('users').doc();
return doc.set(
createDate: admin.firestore.FieldValue.serverTimestamp(),
modifiedDate: admin.firestore.FieldValue.serverTimestamp(),
username: 'NEED TO FIGURE THIS OUT',
email: user.email,
stat: 1,
uid: user.uid,
rowpointer: doc.id,
);
);
【问题讨论】:
【参考方案1】:无法将其他信息传递给auth.user().onCreate
触发器,不幸的是,当帐户更新时无法触发。
您目前的选择是:
-
创建帐户后,从您的应用程序代码中创建文档。
将所有信息传递给 Callable 或 HTTP Cloud Function,并让它处理帐户创建和写入 Firestore。
两者都是完全有效的选项,因此请选择对您来说最合理的选项。
另见:
How to complete login only after functions.auth.user().onCreate is finished Firebase Cloud Function - null user.displayName onCreate firebase cloud function authentication: onCreate event doesn't contain displayName Firebase functions user().onCreate: Pass parameters【讨论】:
我之所以这样做,是因为我想尽可能地保护我的应用免受黑客攻击。我已经读到有些人现在可以反编译应用程序来读取我的代码,所以我担心如果集合写入/读取是从客户端完成的,而不是安全地在客户端上进行,他们将能够更好地操作它服务器。您对此有何看法?以上是关于如何将用户输入参数传递给我的云函数?的主要内容,如果未能解决你的问题,请参考以下文章