我想访问用户的电子邮件 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 = 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。
最佳答案
您需要通过在登录 URL 中使用 scope
来请求 email
权限。
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');
注意:如果用户不同意与您的应用共享电子邮件,您将不会收到电子邮件。
关于php - 如何从 FB 库获取电子邮件 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39889878/