firebase auth onCreate触发器应否有更多数据?

时间:2018-11-20 15:24:22

标签: firebase firebase-authentication google-cloud-functions

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

当我使用电子邮件和密码登录时,UI小部件会提示您输入名称并设置密码。我期望在user函数调用中将名称作为onCreate()参数的一部分,但实际上却什么也没得到:

user: { email: 'xxx@yyyy.co.uk',
  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提供程序进行的注册带有完整填充的user记录,因此我想这尤其是电子邮件/密码问题。

这是一个错误,还是我缺少一些东西?我也没有在context参数中看到其他有用的东西。

1 个答案:

答案 0 :(得分:1)

预计电子邮件和密码的云功能displayName触发器中未填充onCreate。该功能从第一个API调用(createUserWithEmailAndPassword())触发,而显示名称由第二个API调用(updateProfile)设置。

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

我还强烈建议filing a feature request能够在配置文件更改时触发Cloud Function。