从服务器将朋友的Facebook图片保存到磁盘不起作用

时间:2012-03-09 20:26:00

标签: php facebook facebook-graph-api facebook-php-sdk

TL; DR

  • 使用FB JavaScript API
  • 在朋友的个人资料图像相册中查看图像
  • 页面将URL传递给服务器,但服务器无法从URL(HTTP状态0)
  • 下载映像
  • 用户肯定已登录JS api和PHP-SDK API并具有FB照片权限
  • 当前个人资料图片效果很好
  • 此问题不会影响所有用户,只会影响所有用户。

我的Facebook照片应用

我的应用会为您朋友的Facebook图像创建视频剪辑。

该应用程序要求权限:

  • “user_photos”
  • 和“friends_photos”。

用户在浏览器中选择要使用Javascript添加到蒙太奇的图片。然后我将所选图像的URL传递给服务器,服务器从URL下载图像并将其存储在Amazon S3上。

一切都在客户端上运行,始终适用于朋友个人资料图片。但对于其他图像,即来自相册或以前的个人资料照片的图像,我的服务器根本无法下载图像。

使用cURL,返回的状态代码为0.对于其他图像,代码为200。

如何获取对这些图像的访问权限?服务器是否需要传递一些其他数据才能访问CDN图像?

从我的JS传递的图片网址是长链接,如下所示:http://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/s720x720/408158_894440624792_192203432_41161655_469457024_n.jpg (虽然这不是真正的图像链接)

我可以在浏览器中打开图片,但不能在服务器端打开它们。

我正在使用PHP-SDK,因此服务器通过Facebook为登录用户进行身份验证。我知道这是正确的,因为我尝试了多个帐户并检查了当前登录的用户ID。

要下载,我尝试过cURL,file_get_contents和其他一些方法。一切都没有收到,因此我不认为Facebook正在让我的服务器访问图片。

奇怪的是,这个问题似乎只会影响一些用户,而不是每个人。

另外 - 我的服务器是PHP 5.2并且在IIS上运行。

任何帮助都会很棒!

更多信息: 我尝试使用其他用户帐户登录时访问该网址,某人不是该照片所有者的朋友,他们也可以在浏览器中看到该图片。奇怪,我的服务器不能。

1 个答案:

答案 0 :(得分:0)

因为这个问题只发生在Facebook用户的一个子集上,所以我觉得在授予图像权限的方式中可能存在某个错误。

这意味着JS API和PHP API之间存在细微的差异,仅适用于某些图像,仅适用于某些用户。

但是,我现在调整了我的代码,以另一种方式获取图像,因此不再有这个问题。