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之间存在细微差异,仅针对某些图像和某些用户。
然而,我现在已经调整了我的代码,以另一种方式获取图像,因此不再有这个问题。