简单的 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});
});
奇怪的问题,我有一个由 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});
});