For example, here'开发者_Python百科s a 'page':
http://www.facebook.com/facebook
That page has an RSS feed (which I'd like to use, ideally), but a) it browser-sniffs meaning I need to fake the user-agent from a script to fetch it - and that feels really brittle b) the quality of the data returned is really poor.
Can I use the graph api to fetch the same data? This URL:
https://graph.facebook.com/facebook/feed
implies that I can, and json is fine for me, although I'm fetching this from a PHP script rather than client-side. However, when I try that URL for my actual page, I get the following:
{
"error": {
"type": "OAuthAccessTokenException",
"message": "An access token is required to request this resource."
}
}
I don't understand why an access token is required for my page, whilst other pages are 'more public' - is that a configuration on the page somewhere? If not, what's the best way of obtaining the access key - note that this is not an interactive script asking the page owner to authenticate.
If I try to access the URL via CURL, it works OK for me in PHP.
$curlResponse = http('https://graph.facebook.com/facebook/feed');
$facebookFeed = json_decode($curlResponse['data'], true);
var_dump($facebookFeed);
Using this php function:
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;
}
Update: As of June 3, 2011, a valid app or user access_token is required with all API requests.
For more info: http://developers.facebook.com/blog/post/509/
精彩评论