Firebase身份验证用户创建时没有电子邮件地址-来自IOS的Google
我已设置firebase身份验证,正在尝试发送欢迎电子邮件 我不明白的是,为什么经过身份验证的用户没有电子邮件字段,而在提供商数据中只有此字段所有样本使用类似于:Firebase身份验证用户创建时没有电子邮件地址-来自IOS的Google,ios,firebase,firebase-authentication,google-cloud-functions,Ios,Firebase,Firebase Authentication,Google Cloud Functions,我已设置firebase身份验证,正在尝试发送欢迎电子邮件 我不明白的是,为什么经过身份验证的用户没有电子邮件字段,而在提供商数据中只有此字段所有样本使用类似于: exports.sendWelcomeEmail = functions.auth.user().onCreate(event => { const user = event.data; // The Firebase user. const email = user.email; // The email of the
exports.sendWelcomeEmail = functions.auth.user().onCreate(event => {
const user = event.data; // The Firebase user.
const email = user.email; // The email of the user.
const displayName = user.displayName; // The display name of the user.
console.log("New User created: " + JSON.stringify(user));
console.log('email:', email);
然而,我的认证用户似乎没有电子邮件
我的日志显示
email: undefined
- 我正在通过GIDSignInButton使用来自IOS的google身份验证
{
"displayName": "Ryan H",
"metadata": {
"createdAt": "2017-06-19T10:06:21.000Z",
"lastSignedInAt": "2017-06-19T10:06:21.000Z"
},
"photoURL": "https://lh6.googleusercontent.com/-MXne-lIR8e8/AAAAAAAAAAI/AAAAAAAAbeQ/Z1OvxasY/s96-c/photo.jpg",
"providerData": [
{
"displayName": "Ryan H",
"email": "ryanh@gmail.com",
"photoURL": "https://lh6.googleusercontent.com/-MXne-lIR8e8/AAAAAAAAAAI/AAAAAAAAbeQ/Z1asY/s96-c/photo.jpg",
"providerId": "google.com",
"uid": "1077081708"
}
],
"uid": "WjdlLc3QNvrmkj0yOuqo2"
}
如您所见,除了提供商数据中,没有电子邮件
模型有变化吗?
我是否应该始终尝试从提供商数据获取我的电子邮件地址?
为什么我在使用user.email时发现的代码和示例都是相同的
我目前已经启用了google和facebook作为“登录方法”
也许如果我也启用了电子邮件/密码,我就可以访问了
我可以确认,在我的IOS应用程序中,用户登录后也没有电子邮件
据
用户首次注册您的应用程序时,将使用可用信息填充用户的配置文件数据:
如果用户使用电子邮件地址和密码注册,则只填充主电子邮件地址属性
如果用户与联合身份提供商(如Google或Facebook)注册,提供商提供的帐户信息将用于填充Firebase用户的个人资料。这是我的问题的一个解决方法,不是真正的答案: 我从我找到的第一个提供商那里提取一封电子邮件,在我的情况下,它总是 谷歌
exports.sendWelcomeEmail = functions.auth.user().onCreate(event => {
const user = event.data; // The Firebase user.
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;
}
}
}
const displayName = user.displayName; // The display name of the user.
// [END eventAttributes]
console.log("New User created: " + JSON.stringify(user));
console.log('email:', email);
console.log('displayName:', displayName);
sendWelcomeEmail(email,displayName)
return;
});`