facebook - 从图形 API 获取 "real"Facebook 个人资料图片 URL

标签 facebook image profile

Facebook 图形 API 告诉我可以使用以下命令获取用户的个人资料图片

http://graph.facebook.com/517267866/picture?type=large

效果很好。但是,当你在浏览器中输入上面的 URL 时,图片的实际地址是

http://profile.ak.fbcdn.net/profile-ak-snc1/v227/560/83/n517267866_1928.jpg

如何以编程方式使用第一个 URL 获取第二个 URL?

最佳答案

第一个 URL 给第二个 HTTP 302(临时重定向)。因此,要以编程方式查找第二个 URL,您可以对第一个 URL 发出 HTTP 请求并获取 Location。响应头。

就是说,不要依赖第二个 URL 的永久性。仔细阅读 HTTP 响应代码(302,而不是永久的 301),Facebook 可能会定期更改这些 URL,以防止人们(例如)使用他们的服务器托管图像。


编辑:请注意,OP 发布的 CDN URL 现在是 404,因此我们知道我们不能依赖长期存在的 URL。此外,如果您从 <img> 链接到 Graph API在受 SSL 保护的页面上, there's a parameter你必须添加确保你使用http<b>s</b>://graph.facebook.com .


更新: API 有 added a parameterredirect=false – 这会导致返回 JSON 而不是重定向。返回的 JSON 包含 CDN URL:

{
   "data": {
      "url": "http://profile.ak.fbcdn.net/...",
      "is_silhouette": false
   }
}

同样,我不会依赖此 CDN URL 的长期存在。 JSON 响应与允许的 CORS header 一起发送,因此您可以自由地使用 XHR 请求在客户端执行此操作。

关于facebook - 从图形 API 获取 "real"Facebook 个人资料图片 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3341672/

相关文章:

javascript - FB.Event.subscribe 永远不会被调用

java - Android facebook 个人资料获取姓名

java - 如何在程序开始运行时随机定位?

profile - 多个应用程序的一个配置文件?

android - 如何从 Facebook sdk 4.0 获取电子邮件

php - Facebook PHP SDK 通知未显示在 Facebook ios 通知中?

javascript - 将图像数组与 javascript 结合起来(带或不带 Canvas )

java - 在 java 中查找 RGB 的按位版本

erlang - 分析 Erlang/OTP 发布初始化

android - 如何在 Android 中获取 Facebook 个人资料图片