PHP Facebook API - 电子邮件返回null

时间:2016-03-19 10:13:14

标签: php facebook api

我有这样的代码:

    $helper = new FacebookRedirectLoginHelper('http://MyAwesomeWebsite.com/' );

    try {
        $session = $helper->getSessionFromRedirect();
    } catch( FacebookRequestException $ex ) {
        echo print_r($ex);
    } catch( Exception $ex ) {
        echo print_r($ex);
    }
    if ( isset( $session ) ) {
        $request = new FacebookRequest( $session, 'GET', '/me?locale=en_US&fields=name,email' );
        $response = $request->execute();
        $graphObject = $response->getGraphObject();

        $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
    }

但每次$ femail为空。为什么?我做错了什么?

1 个答案:

答案 0 :(得分:0)

当您登录用户时,您必须传递scope参数中的email permission

所以当你打电话给你的助手时,也要初始化一个$permissions数组:

$helper = new FacebookRedirectLoginHelper('http://MyAwesomeWebsite.com/' );
$permissions = ['email', 'public_profile'];

代码中的某处应该$helper->getLoginUrl调用。在该调用中,您应该将$permissions变量作为第二个参数传递:

$loginUrl = $helper->getLoginUrl($placeYourCallbackURLHere, $permissions);

明确要求用户获取用户电子邮件的权限。请注意,如果用户具有以下内容,则电子邮件也可以为空:

  1. 通过电话号码注册到Facebook(Faceebook中没有电子邮件地址)
  2. 选择他们不想在登录提示时提供电子邮件地址。