我有这样的代码:
$helper = new FacebookRedirectLoginHelper('http://MyAwesomeWebsite.com/' );
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
echo print_r($ex);
} catch( Exception $ex ) {
echo print_r($ex);
}
if ( isset( $session ) ) {
$request = new FacebookRequest( $session, 'GET', '/me?locale=en_US&fields=name,email' );
$response = $request->execute();
$graphObject = $response->getGraphObject();
$fbid = $graphObject->getProperty('id'); // To Get Facebook ID
$fbfullname = $graphObject->getProperty('name'); // To Get Facebook full name
$femail = $graphObject->getProperty('email'); // To Get Facebook email ID
}
但每次$ femail为空。为什么?我做错了什么?
答案 0 :(得分:0)
当您登录用户时,您必须传递scope
参数中的email permission。
所以当你打电话给你的助手时,也要初始化一个$permissions
数组:
$helper = new FacebookRedirectLoginHelper('http://MyAwesomeWebsite.com/' );
$permissions = ['email', 'public_profile'];
代码中的某处应该$helper->getLoginUrl
调用。在该调用中,您应该将$permissions
变量作为第二个参数传递:
$loginUrl = $helper->getLoginUrl($placeYourCallbackURLHere, $permissions);
明确要求用户获取用户电子邮件的权限。请注意,如果用户具有以下内容,则电子邮件也可以为空: