我有一段时间遇到了访问令牌问题,我认为通过放入try-catch语法可以解决这个问题。不幸的是,它所做的只是隐藏错误,并且仍然会有/me/accounts返回空值的时候。下面是我的代码:
if($facebook->getUser()==0) {
header("Location:{$facebook->getLoginUrl(array('scope' => 'SCOPE'))}");
} else {
$user = $facebook->getUser();
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl(array(
'scope' => 'SCOPE'
));
}
try {
$access_token=$facebook->setExtendedAccessToken();
$accounts_list = $facebook->api('/me/accounts');
.
.
.
} catch(FacebookApiException $e) {
$results = $e->getResult();
}
}
谁能告诉我为什么我的代码有时会生成一个空数组?
在浏览了Facebook上的开发者博客后,我发现了这个:
从/me/accounts/中删除应用我们将不再在Graph API的/me/accounts/下显示应用程序。你可以通过点击/me/applications/developer/来访问用户开发的应用程序列表。
(你可以在这里找到完整的更改列表
)所以你得到空数组的原因可能是/me/accounts不再被支持。
同样,当进行需要访问令牌的api调用时,您应该像这样传递它:
$facebook->setExtendedAccessToken();
$access_token = $facebook->getAccessToken()
$facebook->api('/me/accounts', 'GET', array(
'access_token' => $access_token));