Facebook Graph API返回空数据

时间:2014-11-29 11:41:15

标签: php facebook-graph-api

您好我试图从我的网页上的用户个人资料中获取FB Feed: 我正在使用应用程序,以下是我尝试过的代码:

<?php
//function to retrieve posts from facebook’s server

$token = 'https://graph.facebook.com/oauth/access_token?client_id=xxxxxx&client_secret=zzzyyyxxx&grant_type=client_credentials';
$token = file_get_contents($token);
function loadFB($fbID){
    $url = "https://graph.facebook.com/".$fbID."/feed?limit=10";
    $url.= '&access_token=xxxxxx|TLd1z0EZNH1SD1VfA';// *
    $c = curl_init($url);
     curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
     $page = json_decode(curl_exec($c));
     var_dump($page);
     curl_close($c);
    if(isset($page->data)){
     return $page->data;}else{echo "aabrakadaabra";}
}

 $fbid = "myfbid";
 date_default_timezone_set("America/Chicago");

 $myPosts = loadFB($fbid);

 foreach($myPosts as $dPost){
    if($dPost->from->id==$fbid){
         $dTime = strtotime($dPost->created_time);
         $myTime=date("M d Y h:ia",$dTime);
        ?>
        <ul>
            <li><?php echo($dPost->message) . $myTime; ?></li>
        </ul>
        <?php
    }
 }
?>

哪个工作正常,因为我没有收到任何错误并确认上述内容我试图直接使用下面的网址查看Feed,并且它返回空数据。

https://graph.facebook.com/myID/feed?&access_token=myToken

这是回归:

{
 "data": [

  ]
}

我已尝试在SO上发布了其他几个答案,但没有帮助。

2 个答案:

答案 0 :(得分:0)

添加范围&#39; read_stream&#39;在登录电话facebook。

然后使用

$this->facebook->setAccessToken('access_token'); $this->facebook->api('/user_id/feed');

但只有当用户授予您访问数据的权限时才会显示

答案 1 :(得分:0)

用户个人资料并非真正用于在外部网站上使用Feed,但如果您真的想这样做,则必须使用用户访问令牌来访问它。授权read_stream权限获取用户访问令牌。

重要提示:用户代币仅在60天内有效,之后您必须刷新它。而且您无法在服务器上自动执行此操作。

有关授权的信息:https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.2

您只能使用该特定用户的用户令牌访问用户Feed。

更好的解决方案:用户页面,您无需为此授权,您只需要一个App Access令牌。

有关令牌的更多信息: