如何将用户输入参数传递给我的云函数?

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

【讨论】:

我之所以这样做,是因为我想尽可能地保护我的应用免受黑客攻击。我已经读到有些人现在可以反编译应用程序来读取我的代码,所以我担心如果集合写入/读取是从客户端完成的,而不是安全地在客户端上进行,他们将能够更好地操作它服务器。您对此有何看法?

以上是关于如何将用户输入参数传递给我的云函数?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI 问题。如何将参数传递给函数

如何将参数传递给 Python 模块中的主函数?

如何在一个条目中将RGB作为单独的参数传递给函数

如何将 UDF 的输入参数传递给 sapply

如何使用 SwiftUI 将参数传递给 Button 的操作

如何迭代地将参数传递给 R 函数