【问题标题】:Using cURL to get Facebook Album jSON with PHP使用 cURL 通过 PHP 获取 Facebook 相册 JSON
【发布时间】:2011-09-26 14:52:49
【问题描述】:

我在 Web Designer 杂志中发现了一个脚本,可以让您从 Facebook 粉丝页面收集专辑数据,并将其放到您的网站上。

该脚本使用 PHP 的 file_get_contents() 函数,该函数在我的个人服务器上运行良好,但不允许在网络解决方案托管上使用。

在查看他们的文档时,他们建议您使用 cURL 会话来收集数据。我以前从未使用过 cURL 会话,所以这对我来说是个谜。任何帮助将不胜感激。

我“曾经”使用的代码如下所示:

<?php
    $FBid = '239319006081415';
    $FBpage = file_get_contents('https://graph.facebook.com/'.$FBid.'/albums');
    $photoData = json_decode($FBpage);

    $albumID = $photoData->data[0]->id;
$albumURL = "https://graph.facebook.com/".$albumID."/photos";

    $rawAlbumData = file_get_contents("https://graph.facebook.com/".$albumID."/photos");
$photoData2 = json_decode($rawAlbumData);

    $a = 0;

foreach($photoData2->data as $data) {
        $photoArray[$a]["source"] = $data->source;
    $photoArray[$a]["width"] = $data->width;
    $photoArray[$a]["height"] = $data->height;
    $a++;
}
?>

我现在尝试使用的代码如下所示:

<?php
    $FBid = '239319006081415';
$FBUrl = "https://graph.facebook.com/".$FBid."/albums";

    $ch = curl_init($FBUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$contents = curl_exec($ch);
curl_close($ch);
$photoData = json_decode($contents);
?>

但是,当我尝试回显或操作 $photoData 的内容时,很明显它是空的。

有什么想法吗?

【问题讨论】:

  • 更改主机。他们一无所知。没有理由禁用 allow_url_fopen 但允许 cURL。
  • 我听到了。我建议更换主机。到目前为止,我只遇到过这些人的问题。但是,如果客户不愿意更换主机 - 我的手被束缚了。
  • 我有一个仅限 FBJS(客户端)的相册加载器,可以从公共相册加载照片。可能更有用:github.com/davidosomething/Facebook-OpenGraph-API-Album-Loader
  • 这看起来可能正是我正在寻找的!谢谢!

标签: php facebook curl fan-page


【解决方案1】:

尝试删除 curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);我不确定那是做什么的,但我没有使用它,而且我的代码看起来非常相似。我也会使用:

json_decode($contents,true);这应该将结果放在数组而不是对象中。这种方法我的运气更好。

把它放在为我工作的类别中。

【讨论】:

    【解决方案2】:

    试试这个,它可以工作

    $ch = curl_init($FBUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $contents = curl_exec($ch);
    $pageData = json_decode($contents);
    //object to array
    $objtoarr = get_object_vars($pageData);
    curl_close($ch);
    

    【讨论】:

      【解决方案3】:

      使用 jquery get Json 代替此提示来自 FB 相册下载器 GreaseMonkey 脚本

      【讨论】:

      • 如果服务器上需要数据怎么办? jQuery 将无法工作。
      猜你喜欢
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      相关资源
      最近更新 更多