我在php的网站上工作,我已经集成了一个Facebook Connect API,启用了Facebook登录按钮。
获取用户详细信息的代码如下所示:
<?php
session_start();
// added in v4.0.0
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\GraphUser;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;
// init app with app id and secret
$appID = 'app id';
$appSecret = 'app secret code';
FacebookSession::setDefaultApplication( $appID, $appSecret);
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('http://localhost/test/facebook_new/fbconfig.php' );
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
// When Facebook returns an error
} catch( Exception $ex ) {
// When validation fails or other local issues
}
// see if we have a session
if ( isset( $session ) ) {
// graph api request for user data
$request = new FacebookRequest( $session, 'GET', '/me' );
$response = $request->execute();
// get response
$profile = $response->getGraphObject('Facebook\GraphUser');
var_dump($profile);
} else {
$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
}
?>
执行此代码后,var_dump($profile)
仅显示User Facebook ID
及其Full Name
,如下图所示:
我想要的是电子邮件。电子邮件可以通过'Facebook\GraphUser'
访问,但我真的不知道我的代码有什么问题。
请帮我解决这个问题
答案 0 :(得分:2)
$request = new FacebookRequest($session, 'GET', '/me?fields=name,email');
它被称为&#34;声明字段&#34;,您必须指定自Graph API v2.4以来要返回的字段。
另外,请确保用户已获得email
权限。
答案 1 :(得分:1)
Facebook用户在其设置中可以将其电子邮件设置为私人或公共。这可能是它没有出现的原因。