2014-10-03 111 views
0

您好,我正在尝试使用应用程序会话发出请求,并说:“(#200)必须有有效的access_token才能访问此端点”。我只能通过应用会话提出请求吗?使用Facebook-php-sdk请求应用程序级别的信息

在它的代码下面给了我这个错误。

<?php 
require_once('Facebook/FacebookSession.php'); 
require_once('Facebook/GraphObject.php'); 
require_once('Facebook/GraphSessionInfo.php'); 
require_once('Facebook/FacebookRedirectLoginHelper.php'); 
require_once('Facebook/FacebookSDKException.php'); 
require_once('Facebook/FacebookRequestException.php'); 
require_once('Facebook/FacebookPermissionException.php'); 
require_once('Facebook/FacebookRequest.php'); 
require_once('Facebook/FacebookResponse.php'); 
require_once('Facebook/FacebookAuthorizationException.php'); 
require_once('Facebook/GraphObject.php'); 
require_once('Facebook/Entities/AccessToken.php'); 
require_once('Facebook/HttpClients/FacebookCurl.php'); 
require_once('Facebook/HttpClients/FacebookHttpable.php'); 
require_once('Facebook/HttpClients/FacebookCurlHttpClient.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; 

// start session 
session_start(); 

// init app with app id and secret 
FacebookSession::setDefaultApplication($facebook_app_id, $facebook_app_secret); 

$session = FacebookSession::newAppSession(); 

// To validate the session: 
try { 
    $session->validate(); 
} catch (FacebookRequestException $ex) { 
    // Session not valid, Graph API returned an exception with the reason. 
    echo $ex->getMessage(); 
} catch (\Exception $ex) { 
    // Graph API returned info, but it may mismatch the current app or have expired. 
    echo $ex->getMessage(); 
} 

if(isset($session)){ 
    try { 
     $response = (new FacebookRequest($session, 'GET', '/search?q=coimbra&type=event&limit=5000'))->execute(); 
     $object = $response->getGraphObject(); 
     echo "done."; 
    } catch (FacebookRequestException $ex) { 
     echo $ex->getMessage(); 
    } catch (\Exception $ex) { 
     echo $ex->getMessage(); 
    } 
} 

?> 

回答

0

该错误表示您必须拥有有效的USER access_token才能执行搜索。这是因为搜索结果将过滤出用户不被允许看到的事件(或其他内容),例如,私人活动或封闭活动。但它也意味着你发现用户有权查看的事件。

总之,您需要登录用户才能获取有效用户access_token以使搜索正常工作。

+0

什么样的信息可以通过应用程序级别会话获得? – user3709132 2014-10-03 12:26:46