简单的 firebase 身份验证函数上的未定义错误

Undefined error on simple firebase auth function

奇怪的问题,我有一个由 Firebase newUser auth 触发的函数 如果用户使用 Google 或 Facebook 提供程序,该功能有效,但如果它 email/password 注册功能 returns 未定义错误。 我在这里缺少什么?

函数代码:

  exports.newUser = functions.auth.user().onCreate((user) => {
    const docRef = admin.firestore().collection('Users').doc(user.uid)

    return docRef.set({
        email: user.email,
        name: '',
        photo: '',
        signupDate: admin.firestore.FieldValue.serverTimestamp()
      },{merge: true});
  });

UserRecord email 属性 的文档表明它并不总是可用。因此,您应该在代码中检查这一点。

user.email 字段出现在提供者下,而不像 Firebase 示例中直接在用户下。

这里应该是这样的:

var email = user.email; // The email of the user.
if (email == undefined) {
  for (var provider of user.providerData) {
    if (provider.email) {
      email = provider.email;
      break;
    }
  }
}

 return docRef.set({
      email: email,
      name: '',
      photo: '',
      signupDate: admin.firestore.FieldValue.serverTimestamp()
    },{merge: true});
});