拯救朋友';从服务器到磁盘的Facebook图片不起作用


Saving a friend's Facebook picture to disk from the server does not work

TL;DR

  • 使用FB JavaScript API在网页上查看朋友个人资料相册中的图像
  • 页面将URL传递给服务器,但服务器无法从URL下载图像(HTTP STATUS 0)
  • 用户肯定同时登录JS api和PHP-SDK api,并拥有FB照片权限
  • 当前配置文件图像效果良好
  • 此问题不会影响所有用户,只会影响部分用户

我的Facebook照片应用程序

我的应用程序会为你朋友的Facebook图片创建一个视频蒙太奇。

应用程序请求权限:

  • "用户照片"
  • 和"friends_photos"

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

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

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

如何访问这些图像?服务器是否需要传递一些其他数据才能访问CDN映像?

从我的JS传递的图像URL是长链接,看起来像这样: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上运行。

任何帮助都将是美妙的!

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

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

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

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