0

我正在开发一个显示用户/朋友照片的应用程序。在大多数情况下,我可以从相册中提取照片,但是对于用户/相册封面照片,给出的只是对象 ID,以下 URL 为其提供了图像:

https://graph.facebook.com/1015146931380136/picture?access_token=ABCDEFG&type=picture

查看时会将用户重定向到图像文件本身,例如:

https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/420455_1015146931380136_78924167_s.jpg

我的问题是,是否有 Pythonic 或 GraphAPI 方法来解析最终图像路径并避免将访问令牌发送给最终用户?

4

3 回答 3

2

要获取封面照片的实际图片网址,首先您可以调用 facebook api 来获取封面图片,然后提取url字段,PHP我会执行以下操作:

$cover = $facebook->api("$album_id?fields=picture&access_token=ABVHDG");
$cover_url = $cover['picture']['data']['url']; //this $cover_url is image file itself from host fbcdn-photos-a.akamaihd.net

希望能帮助到你

于 2012-11-05T09:36:39.807 回答
2

facebook 图形 api url 执行 302 重定向到实际具有用户头像的 CDN url。您可以使用轻松找到它urllib2

>>> import urllib2
>>> url = "http://graph.facebook.com/4/picture"
>>> req = urllib2.Request(url)
>>> res = urllib2.urlopen(req)
>>> finalUrl = res.geturl()
>>> finalUrl
'http://profile.ak.fbcdn.net/hprofile-ak-prn1/157340_4_3955636_q.jpg'

或者为图片调用 JSON 版本的 Graph api:

http://graph.facebook.com/4/?fields=picture&type=large

解码它,得到url

{
   "id": "4",
   "picture": {
      "data": {
         "url": "http://profile.ak.fbcdn.net/hprofile-ak-prn1/157340_4_3955636_q.jpg",
         "is_silhouette": false
      }
   }
}

尖端:

  1. 不要在 http 可以工作的地方使用 https,它在 avatar api 中工作。http更快。
  2. 您不需要 access_token 来查询图形 api 的图片,它也可以在没有 access_token 的情况下工作。
于 2012-11-05T09:37:48.087 回答
1

像这样进行 Graph API 调用,您将获得真实的 URL:

https://graph.facebook.com/[fbid]?fields=picture

顺便说一句,您不需要访问令牌。

于 2012-11-05T09:11:45.080 回答