【问题标题】:Saving a friend's Facebook picture to disk from the server does not work将朋友的 Facebook 图片从服务器保存到磁盘不起作用
【发布时间】:2012-03-09 20:26:00
【问题描述】:

TL;DR

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

我的 Facebook 照片应用

我的应用会为您朋友的 Facebook 图片创建视频蒙太奇。

应用请求权限:

  • “用户照片”
  • 和“friends_photos”。

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

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

使用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,该用户不是照片所有者的朋友,他们也可以在浏览器中看到该图像。奇怪的是我的服务器不能。

【问题讨论】:

  • 我也不能在浏览器中打开这个(长)!
  • 图片不是有效的 URL。我只是举了一个例子来展示我看到的 url 的格式。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多