Using the Facebook Graph API, how can I get the contents of a page?
例如,这里有一个\\'page\\':
http://www.facebook.com/facebook
那个页面有一个 RSS 提要(理想情况下我想使用它),但是 a) 它浏览器嗅探意味着我需要从脚本中伪造用户代理来获取它 - 这感觉真的很脆弱b) 返回的数据质量真的很差。
我可以使用图形 api 来获取相同的数据吗?此网址:
https://graph.facebook.com/facebook/feed
暗示我可以,并且 json 对我来说很好,尽管我是从 PHP 脚本而不是客户端获取它。但是,当我为我的实际页面尝试该 URL 时,我得到以下信息:
1 2 3 4 5 6 | { "error": { "type":"OAuthAccessTokenException", "message":"An access token is required to request this resource." } } |
我不明白为什么我的页面需要访问令牌,而其他页面却"更加公开"——这是页面上某处的配置吗?如果不是,那么获取访问密钥的最佳方法是什么 - 请注意,这不是要求页面所有者进行身份验证的交互式脚本。
如果我尝试通过 CURL 访问 URL,它在 PHP 中对我来说可以正常工作。
1 2 3 4 | $curlResponse = http('https://graph.facebook.com/facebook/feed'); $facebookFeed = json_decode($curlResponse['data'], true); var_dump($facebookFeed); |
使用这个 php 函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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; } |
更新:自 2011 年 6 月 3 日起,所有 API 请求都需要有效的应用程序或用户 access_token。
更多信息:http://developers.facebook.com/blog/post/509/