缓存facebook个人资料照片?

时间:2010-02-16 11:23:22

标签: facebook

我正在建立一个允许用户使用他们的Facebook帐户登录的网站。

我想缓存好用户个人资料图片的大版本。我知道我不允许将图像缓存超过24小时,因此我将每24小时重新获取一次图像。

我以为我可以像这样得到原始图像的网址:

$fb=new Facebook($key,$secret);
$query = "SELECT src_big FROM photo WHERE pid IN (SELECT cover_pid FROM album WHERE owner = ".$id." AND name = 'Profile Pictures')";
$imgurl = $fb->api_client->fql_query($query);

http://wiki.developers.facebook.com/index.php/Photo_(FQL)

但我得到一个例外,说“需要用户会话”。为什么我需要用户会话?这有解决方法吗?其他网站如何解决这个问题?

如果我有一个用户会话,它适用于某些用户,但不适用于所有用户。为什么不呢?

2 个答案:

答案 0 :(得分:1)

当它偶尔起作用时:某些用户可能设置了隐私设置以禁止应用程序访问其个人资料图片。

可能有些用户可能没有上传个人资料照片。

修改:从(新)fb菜单转到:Account> Privacy Settings> Applications and Websites> What you Share
(此页面介绍了用户的隐私设置选项如何影响fb增强型网站)

简而言之,外部网站只能访问fb用户为“所有人”提供的内容。

答案 1 :(得分:1)

有关照片辅助功能的规则详见Photos.get API method

  

隐私权注意:照片可见   Facebook平台只有在   照片所有者已授权通话   应用程序,或照片所有者   没有关闭对平台的访问权。

Photos.get方法实际上是查询Photo FQL table的包装器,所以它遵循相同的规则。

考虑向用户询问offline_access extended permission,以便即使他们不在线也可以查询自己的照片。您需要将会话密钥存储在数据库中并使用该密钥进行查询,但这意味着您可以随时下载已授权您的应用程序的用户的照片。