【发布时间】:2015-07-14 16:25:47
【问题描述】:
我想在使用他们的 PHP SDK V5 从 Facebook 登录后获取用户的电子邮件地址,但遇到了我不太明白的问题。
根据他们的分步指南https://developers.facebook.com/docs/reference/php/5.0.0
我创建了 Login.php 和 Login-callback.php 文件
Login.php
session_start() ;
require_once __DIR__ . '/src/Facebook/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $app_secret,
'default_graph_version' => 'v2.2',
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email', 'public_profile']; // optional
$loginUrl = $helper->getLoginUrl('http://www.example.com/login-callback.php', $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
登录回调.php
session_start() ;
require_once __DIR__ . '/src/Facebook/autoload.php';
# login-callback.php
$fb = new Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $app_secret,
'default_graph_version' => 'v2.2',
]);
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (isset($accessToken)) {
// Logged in!
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
// Sets the default fallback access token so we don't have to pass it to each request
$fb->setDefaultAccessToken($longLivedAccessToken);
try {
$response = $fb->get('/me');
$userNode = $response->getGraphUser();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
echo 'Logged in as ' . $userNode->getName();
$graphObject = $response->getGraphObject();
$email = $graphObject->getProperty('email'); // This is not getting any thing
echo $email; // Empty
}
graphObject->getProperty('email');没有返回任何东西
【问题讨论】:
-
您需要询问电子邮件字段
-
我该怎么做?因为我试图发出这样的请求 $request = new FacebookRequest($longLivedAccessToken, 'GET', '/me'); $response = $request->execute(); $graphObject = $response->getGraphObject(); $email = $graphObject->getProperty('email');
-
它给了我致命错误:找不到类“FacebookRequest”
-
$fb->get('/me?fields=email'); -
@WizKid,您应该将此作为答案发布
标签: php facebook facebook-graph-api