我只得到 Facebook 用户的基本信息,但我需要更多

I only get basic info of Facebook user, but I need more

我这样称呼login-callback.php:

$permissions = ['email', 'user_likes', 'user_hometown'];
$helper = $fb->getRedirectLoginHelper();
$loginUrl = $helper->getLoginUrl('http://localhost:1234/fbtest/login-callback.php', $permissions);

echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';

这是我在 login-callback.php 中的登录操作:

if (isset($accessToken)) {
  // Logged in!
  $_SESSION['facebook_access_token'] = (string) $accessToken;

 $response = $fb->get('/me');
  $userNode = $response->getGraphUser();


  print_r($userNode);
echo 'data: ' . $userNode['name'];
echo '<br>';

}

输出如下:

Facebook\GraphNodes\GraphUser Object ( [items:protected] => Array ( [name] => xxxNAMExxx [id] => XXXXNUMBERSXXXXX ) )data: xxxNAMExxx

(我明显隐藏了我的ID和真实姓名)

问题是:为什么我不能在我的 $userNode 数组中得到像 emailuser_hometown 这样的东西,即使我指定了$permissions (ref) 中的那些?我可以得到 name 因为它是集合,但是除了这个和 id,没有别的了...

我是不是漏掉了什么?

您在 API 调用中缺少声明字段:

$response = $fb->get('/me?fields=name,email,likes,hometown');

更多信息:https://developers.facebook.com/docs/apps/changelog#v2_4