Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase Facebook身份验证未为某些用户返回电子邮件_Javascript_Firebase - Fatal编程技术网

Javascript Firebase Facebook身份验证未为某些用户返回电子邮件

Javascript Firebase Facebook身份验证未为某些用户返回电子邮件,javascript,firebase,Javascript,Firebase,我用Firebase运行了一个Ionic 3应用程序。一切正常,直到其中一个用户登录,他的电子邮件地址在Firebase身份验证部分为空。下面的代码是否需要设置任何其他权限才能检索电子邮件地址 facebookLogin(): void { this.facebook.login(['email']).then((response) => { const facebookCredential = firebase.auth.FacebookAuthProvider

我用Firebase运行了一个Ionic 3应用程序。一切正常,直到其中一个用户登录,他的电子邮件地址在Firebase身份验证部分为空。下面的代码是否需要设置任何其他权限才能检索电子邮件地址

  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
显示了正确的电子邮件地址。