Javascript Firebase Facebook身份验证未为某些用户返回电子邮件
我用Firebase运行了一个Ionic 3应用程序。一切正常,直到其中一个用户登录,他的电子邮件地址在Firebase身份验证部分为空。下面的代码是否需要设置任何其他权限才能检索电子邮件地址Javascript Firebase Facebook身份验证未为某些用户返回电子邮件,javascript,firebase,Javascript,Firebase,我用Firebase运行了一个Ionic 3应用程序。一切正常,直到其中一个用户登录,他的电子邮件地址在Firebase身份验证部分为空。下面的代码是否需要设置任何其他权限才能检索电子邮件地址 facebookLogin(): void { this.facebook.login(['email']).then((response) => { const facebookCredential = firebase.auth.FacebookAuthProvider
facebookLogin(): void {
this.facebook.login(['email']).then((response) => {
const facebookCredential = firebase.auth.FacebookAuthProvider
.credential(response.authResponse.accessToken);
firebase.auth().signInWithCredential(facebookCredential)
.then((success) => {
// console.log("Firebase success: " + JSON.stringify(success));
this.user = success;
this.doLoginStuff(success, 'facebook');
})
.catch((error) => {
if (error.code === "auth/account-exists-with-different-credential") {
this.presentToast(error.message)
}
// alert("Firebase failure: " + JSON.stringify(error));
});
}).catch((error) => { console.log(error) });
}
不要使用
。使用凭据登录,使用。onAuthStateChanged
,或者,这可能是Facebook的一个次要问题。浏览developers.facebook.com并检查您的应用是否已打开/公开,然后检查您的应用程序审查页面以确保您可以收到电子邮件
我相信用户可以在Facebook登录确认对话框中选择不允许您的应用程序接收他们的电子邮件。这可能是潜在的问题。该应用程序应该根据用户的电子邮件地址为用户提供访问权限。您知道可以使用的其他唯一标识符吗?因此,有人将用户添加到“alowedUsers”列表中,当用户登录时,如果有电子邮件,则该用户可以访问。用户不一定在Facebook上设置了电子邮件地址,例如,如果他们使用手机注册。如果有一套,必须确认;在一些罕见的情况下,即使用户授予了权限,某些隐私设置显然也会使您无法获得该权限。不要将电子邮件地址与Facebook登录相结合。“您知道可以使用的其他唯一标识符吗?”-没有可以提前添加到列表中的标识符。是的。。。我刚才读到“注意,即使你请求电子邮件许可,也不能保证你会收到电子邮件地址。例如,如果有人用电话号码而不是电子邮件地址注册Facebook,电子邮件字段可能是空的。”“然后检查你的应用程序审查页面,确保你可以收到电子邮件。”-默认情况下,此权限对所有应用程序都是批准的,因为它还表示-在这方面无需检查。这些设置与屏幕截图中的设置相同。谢谢,我已经有这套了。我只需要电子邮件地址。有趣的是,user.email
字段仍然是空的,但是additionalUserInfo.profile.email
显示了正确的电子邮件地址。