2010-02-16 319 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

相關問題