firebase - firebase auth onCreate 触发器应该有更多数据吗?

标签 firebase firebase-authentication google-cloud-functions

我正在使用functions.auth.user().onCreate()作为firestore项目的一部分,并尝试在新用户注册时设置一些默认数据。对于前端,我使用 firebase-ui,并启用了 Google 和电子邮件/密码提供商。

当我使用电子邮件和密码登录时,UI 小部件会提示输入名称并设置密码。我原本希望在 onCreate() 函数调用中看到该名称作为 user 参数的一部分,但我几乎什么也没得到:

user: { email: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0179797941787878782f626e2f746a" rel="noreferrer noopener nofollow">[email protected]</a>',
  emailVerified: false,
  displayName: null,
  photoURL: null,
  phoneNumber: null,
  disabled: false,
  providerData: [],
  customClaims: {},
  passwordSalt: null,
  passwordHash: null,
  tokensValidAfterTime: null,
  metadata: 
   UserRecordMetadata {
     creationTime: '2018-11-20T15:06:01Z',
     lastSignInTime: '2018-11-20T15:06:01Z' },
  uid: 'QDJ5OJTwbvNo2QNDVQV9VsxC2pz2',
  toJSON: [Function] }

甚至没有获取提供商信息,因此我无法判断注册的是哪种“类型”的用户。这几乎就像在填充用户记录之前触发此函数(除了电子邮件地址确实通过)。此外,通过 Google 提供商进行的注册会附带完整填充的用户 记录,因此我猜测这是电子邮件/密码的具体问题。

这是一个错误,还是我遗漏了什么?我在 context 参数中也没有看到任何其他有用的内容。

最佳答案

预计电子邮件+密码的 Cloud Functions onCreate 触发器中不会填充 displayName。该函数由第一个 API 调用 (createUserWithEmailAndPassword()) 触发,而显示名称则通过第二个 API 调用 (updateProfile) 设置。

通常的解决方法是创建一个云函数来更新用户配置文件,如下所示:Firebase Auth+Functions | create user with displayName

我也强烈推荐filing a feature request能够在配置文件更改时触发云功能。

关于firebase - firebase auth onCreate 触发器应该有更多数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53396227/

相关文章:

javascript - 不使用 setTimeout() 滚动到 div 的底部

firebase - `firebase_tools.firestore .delete` 需要一个 token ,但该 token 从何而来?

javascript - 如何将 Promise.all 传递给另一个函数 Cloud Functions for Firebase

go - 将 Go 子包部署到 Google Cloud Functions 失败

javascript - 有什么方法可以知道何时在 Firebase 数据库中插入和更新数据?

android - 如何将多个 project_number/sender id 放入 google-services.json

ios - iOS 10 上未收到 Firebase 通知

javascript - 如何在 Google Firestore 中获取当前登录用户的文档

ios - Flutter firebase_auth 中的无效应用程序凭据/ token 不匹配

firebase - 如何验证由 createCustomToken() 创建的自定义 Firebase 身份验证 token