Facebook登录PHP(未收到电子邮件)

时间:2018-01-27 15:56:57

标签: php facebook email facebook-php-sdk

我已经阅读了很多关于此的主题,我的电子邮件设置为主要但我无法使用Facebook登录SDK检索它,我也使用范围,但仍然没有电子邮件。

我只是不知道我现在应该在哪里修改包含电子邮件范围的行。

if ( isset( $session ) ) {
  // graph api request for user data
  $request = new FacebookRequest( $session, 'GET', '/me?scope=email' );
  $response = $request->execute();
  // get response
  $graphObject = $response->getGraphObject();

  var_dump($graphObject);
        $fbid = $graphObject->getProperty('id');              // To Get Facebook ID
        $fbfullname = $graphObject->getProperty('name'); // To Get Facebook full name
        $femail = $graphObject->getProperty('email');    // To Get Facebook email ID
    /* ---- Session Variables -----*/
        $_SESSION['FBID'] = $fbid;           
        $_SESSION['FULLNAME'] = $fbfullname;
        $_SESSION['EMAIL'] =  $femail;
    /* ---- header location after session ----*/
  header("Location: /ico/");
} else {
  $loginUrl = $helper->getLoginUrl(array('scope' => 'email'));
 header("Location: ".$loginUrl);
}

2 个答案:

答案 0 :(得分:1)

范围用于登录,您需要使用fields参数:

$request = new FacebookRequest($session, 'GET', '/me?fields=name,email');

答案 1 :(得分:0)

一些可能的原因:

  1. 帐户中没有电子邮件地址
  2. 帐户中未确认电子邮件地址
  3. 帐户中未经过验证的电子邮件地址
  4. 用户输入了一个安全检查点,要求他们重新确认他们的电子邮件地址,但他们还没有这样做
  5. 用户的电子邮件地址无法访问
  6. 如果用户拒绝许可,FB将不会再次请求相同的权限。为此,您必须遵循re-request方法。
  7. 在某些情况下,我还观察到,如果用户使用他们的电话号码登录,则FB不会返回他们的电子邮件。但是,我不完全确定这种情况。可能还有其他因素影响它。
相关问题