2010-02-16 176 views
0

我正在建立一个网站,允许用户使用他们的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)

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

如果我有一个用户会话,它适用于一些用户,但不是全部。为什么不?

回答

1

有关照片无障碍的规​​定详见Photos.get API method

隐私注:照片上 可见Facebook的平台只有在 照片所有者授权调用 应用程序,或照片所有者 不关闭接入平台。

Photos.get方法基本上是一个查询Photo FQL table的包装,因此它遵循相同的规则。

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

1

当它偶尔工作:一些用户可能已设置隐私设置,以禁止应用程序访问其个人资料图片。

可能有些用户可能没有上传配置文件图片。

编辑:从(新)FB菜单转到:Account>Privacy Settings>Applications and Websites>What you Share
(此页介绍有关用户隐私设定选择将如何影响FB-增强网站)

简而言之,外部网站只能访问fb用户提供的'所有人'。

+0

好吧,你知道你在Facebook上的哪个位置设置了隐私设置吗?我找不到它。 – Martin 2010-02-16 11:35:48

+0

我在答案中加了一个编辑。 – 2010-02-16 11:49:12

相关问题