5

例如,这是一个“页面”:

http://www.facebook.com/facebook

该页面有一个RSS提要(理想情况下我想使用它),但是a)它浏览器嗅探意味着我需要从脚本中伪造用户代理来获取它-感觉真的很脆弱b)质量返回的数据真的很差。

我可以使用图形 api 来获取相同的数据吗?这个网址:

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

意味着我可以,并且 json 对我来说很好,尽管我是从 PHP 脚本而不是客户端获取它。但是,当我为我的实际页面尝试该 URL 时,我得到以下信息:

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

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

4

2 回答 2

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;
}
于 2010-07-22T13:49:43.943 回答
2

更新:截至 2011 年 6 月 3 日,所有 API 请求都需要有效的应用程序或用户 access_token。

欲了解更多信息:http: //developers.facebook.com/blog/post/509/

于 2011-06-06T18:28:26.370 回答