5

例如,这里有一个“页面”:使用Facebook Graph API,我怎样才能得到一个页面的内容?

http://www.facebook.com/facebook

该页面有一个RSS feed(我想用,最好是哪种),但一)浏览器的嗅探这意味着我需要假用户代理从脚本中获取 - 并且感觉非常脆弱b)返回数据的质量非常差。

我可以使用图形API获取相同的数据吗?此网址:

https://graph.facebook.com/facebook/feed

意味着我可以和JSON是为我好,但我这取从PHP脚本,而不是客户端。然而,当我尝试网址为我的实际网页,我得到如下:

{ 
    "error": { 
     "type": "OAuthAccessTokenException", 
     "message": "An access token is required to request this resource." 
    } 
} 

我不明白为什么需要我的页面访问令牌,而其他页面是“更多的公众” - 是,某个地方的页面上的配置?如果不是,获取访问密钥的最佳方式是什么 - 请注意,这是而不是交互式脚本,要求页面所有者进行身份验证。

+0

您是否尝试抓取您的网址之前,您的用户连接? – Doomsday 2010-07-20 09:42:30

+0

这是术语开始引发问题的地方......这是我在这里讨论的'页面',但是当你说“你的用户”时,你的意思是一个用户是谁的页面管理员?我仍然试图让我的头脑围绕(庞大而复杂的)Facebook数据模型。 – 2010-07-20 09:51:28

回答

5

如果我尝试通过CURL访问URL,它在PHP中对我有用。

$curlResponse = http('https://graph.facebook.com/facebook/feed'); 
$facebookFeed = json_decode($curlResponse['data'], true); 

var_dump($facebookFeed); 

使用这个PHP函数:

function http($url) { 
    $timeout = 30; 
    $connectTimeout = 30; 
    $sslVerifyPeer = false; 

    $response = array(); 
    $ci  = curl_init(); 

    /* Curl settings */ 
    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $connectTimeout); 
    curl_setopt($ci, CURLOPT_TIMEOUT, $timeout); 
    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:')); 
    curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $sslVerifyPeer);  
    curl_setopt($ci, CURLOPT_URL, $url); 

    $response['http_code'] = curl_getinfo($ci, CURLINFO_HTTP_CODE); 
    $response['api_call'] = $url; 
    $response['data']  = curl_exec($ci); 

    curl_close ($ci); 

    return $response; 
} 
+0

所以看来数据是公开的,并且不需要认证。 – eillarra 2010-07-22 13:57:40

+0

那么,一些数据似乎是公开的 https://graph.facebook.com/104783309570620/feed(这是一个网站页面) https://graph.facebook.com/141228739224419/feed(一家商店) 和一些没有... https://graph.facebook.com/104412186277028/feed(音乐乐队页面) – eillarra 2010-07-22 14:07:55

+0

奇怪 - 我们的'网页'的相应网址不是这样的行为,但现在! Facebook做出了改变,或者某人以某种方式改变了我们的'网页'以允许这样做。你的回答是正确的,尽管它正是我想要的:-)所以有一些赏金! – 2010-07-26 09:34:27

相关问题