Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Php 如何从FB库获取电子邮件id_Php_Facebook_Email - Fatal编程技术网

Php 如何从FB库获取电子邮件id

Php 如何从FB库获取电子邮件id,php,facebook,email,Php,Facebook,Email,我想访问用户的电子邮件id,因为我尝试了下面的代码,为此我检查了许多网站。我找到了这些方法来访问用户的电子邮件id。但它们似乎都不起作用。请帮我解决这个问题 提前谢谢 <?php session_start(); require_once 'autoload.php'; use Facebook\FacebookSession; use Facebook\FacebookRedirectLoginHelper; use Facebook\FacebookRequest; use Fac

我想访问用户的电子邮件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>
$request=newfacebookrequest($session,'GET','/me?fields=name,email')

2>
$request=newfacebookrequest($session,'GET','me',['fields'=>'id,name,email,address,first\u name,last\u name'])

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


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

您需要在登录URL中使用
范围
来请求
电子邮件
权限

SDK第5版:

$loginUrl = $helper->getLoginUrl($redirectUrl, array('scope' => 'email'));
SDK第4版:

$loginUrl = $helper->getLoginUrl(array('scope' => 'email'));
别忘了同时请求电子邮件字段:

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

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

根据Facebook的政策,如果用户将电子邮件作为私人邮件保存,则无法获得该电子邮件,否则您可以使用以下行文获得该电子邮件


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

我刚刚尝试了这个选项。它说抱歉,此页面不可用。生成你的应用程序中是否设置了正确的重定向URL?你总是需要在范围内请求电子邮件权限,但这并没有改变。更改的是声明性字段。您应该更新答案,这有点误导。@Shubham,我看到您使用的是旧版本的facebook SDK(4),而这一版本有不同的语法。就像这样使用它:
$loginUrl=$helper->getLoginUrl(数组('scope'=>'email')
$graphObject->getProperty('email')应该可以正常工作。只需确保您请求电子邮件字段:
$request=newfacebookrequest($session,'GET','/me?fields=email')请注意,如果用户不同意与你的应用程序共享电子邮件,你将无法获得它。由此生成的URL无效。基本url是生成的,它不在facebook服务器上。在添加此项之前,基本url为,这很好。为了安全起见,只需确保您的电子邮件在Facebook帐户中是公开的。供您参考,请参阅此。是的,用户的电子邮件必须是公开的。您可以编写一个额外的if条件,如果电子邮件不存在,则向用户提供一个文本字段以输入其电子邮件地址