如何从FB库获取电子邮件ID

时间:2016-10-06 07:20:33

标签: php facebook email

我想访问用户的电子邮件ID,因为我尝试了下面的代码,我为此目的检查了很多网站。我找到了这些方法来访问用户的电子邮件ID。但它们似乎都不起作用。请帮我解决这个问题。

提前致谢。

<?php

session_start();
require_once 'autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;

// init app with app id and secret
FacebookSession::setDefaultApplication('MY_app_id', 'my_app_secret');
$helper = new FacebookRedirectLoginHelper('http://prov.resolv.com/provision_sid/Facebook_2/fbconfig.php');
try {
    $session = $helper->getSessionFromRedirect();
} catch (FacebookRequestException $ex) {
} catch (Exception $ex) {
}

if (isset($session)) {
    // graph api request for user data
    $request = new FacebookRequest($session, 'GET', '/me');
    $response = $request->execute();
    // get response
    $graphObject = $response->getGraphObject();
    $fbid = $graphObject->getProperty('id');              // To Get Facebook ID
    $fbfullname = $graphObject->getProperty('name');      // To Get Facebook full name
    echo $femail = $graphObject->getProperty('email'); 

    die();

    $_SESSION['FBID'] = $fbid;
    $_SESSION['FULLNAME'] = $fbfullname;
    $_SESSION['EMAIL'] = $femail;
    /* ---- header location after session ---- */


    header("Location: index.php");
} else {
    $loginUrl = $helper->getLoginUrl();
    header("Location: " . $loginUrl);
}
?>

我尝试了多个选项来请求电子邮件ID

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

2 - ; $request = new FacebookRequest($session, 'GET', '/me',['fields' => 'id,name,email,address,first_name,last_name']);

通过上述请求,我无法获得用户的电子邮件ID。

是否有其他方式可以请求用户的电子邮件ID。

2 个答案:

答案 0 :(得分:2)

您需要在登录网址中使用boolean isPrime = true; Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = 2; i< n; i++){ if(n%i==0) { System.out.println("Not Prime"); isPrime=false; break; } } if(isPrime) { System.out.println("Prime"); } 来申请email权限。

SDK版本5:

scope

SDK版本4:

$loginUrl = $helper->getLoginUrl($redirectUrl, array('scope' => 'email'));

不要忘记也请求电子邮件字段:

$loginUrl = $helper->getLoginUrl(array('scope' => 'email'));

注意:如果用户不同意与您的应用分享电子邮件,您将无法获得该电子邮件。

答案 1 :(得分:0)

根据Facebook政策,如果用户将电子邮件保留为私人电子邮件,则无法通过以下行获取其他信息。

$helper->getLoginUrl($redirectUrl, array('scope' => 'email'));

相关问题