PHP Facebook SDK.关于访问令牌


PHP Facebook SDK.About the access Token

现在我可以获得自己的信息,如我的id、用户名。但当我使用此访问令牌来获取我的朋友列表时,错误是:必须使用活动访问令牌来查询有关当前用户的信息。这是什么意思?为什么访问令牌不起作用?第一个php:

$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('http://my_ip/facebook/login-callback.php', $permissions);

第二个php:(我可以得到我的信息):

try {
   $response = $fb->get('/me');
   var_dump($response);
   echo "<br>";
   $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 "<br>";
echo 'logged in as the id '.$userNode->getId()."<br>";
echo 'Logged in as ' . $userNode->getName()."<br>";
echo 'the user picture is '.$userNode->getPicture()."<br>";
$picture = $userNode->getPicture();

和:

$permissions = ['user_friends'];
$friendsUrl = $helper->getLoginUrl('http://my_ip/facebook/friends-callback.php',$permissions);

最后,在第三个php中,我使用相同的方式获取信息,但失败了。

我认为您误解了Facebook API的概念。

首先,您必须获得用户许可才能接受您的请求:

$permissions = ['email', 'user_friends']; // Permissions
$loginUrl = $helper->getLoginUrl('http://my_ip/facebook/login-callback.php', $permissions);

然后,在login-callback.php文件中,您可以根据请求的权限访问API。好友列表:

$response = $fb->get('/me/friends');
var_dump($response);

你不必每次都在第一次请求后登录。访问令牌将保存在会话中。