2010-06-29 65 views
2

我有一個用php編寫的Facebook應用程序,它將在您的個人資料上顯示隨機引號。 該框似乎沒有更新,它看起來像它最初添加時那樣。Facebook應用程序:隨機報價不刷新每頁加載

我想更新每個頁面加載(刷新)的配置文件框,而不是像點擊鏈接那樣的用戶操作。

任何想法是什麼問題以及如何解決它?

+0

你在哪裏把報價放在用戶的個人資料上?作爲配置文件信息的一部分(即使用profile.setInfo/setFBML進行設置)或作爲配置文件選項卡? – Cyphus 2010-07-02 16:31:05

+0

它只是默認配置文件(牆上)上的一個框而不是新的選項卡。 – Imageree 2010-07-03 22:59:43

+0

我使用這個: http://wiki.developers.facebook.com/index.php/Profile.setFBML 但我認爲Facebook改變了它,並希望我們現在使用應用程序選項卡。 – Imageree 2010-07-05 10:03:03

回答

1

配置文件內容由Facebook緩存,並且在每次加載頁面時都不會連接到您的服務器。這一直以這種方式工作。沒有JavaScript負載/自動運行,因此您不能在頁面加載時顯示新的報價。

你可以做的是在配置文件內容和我們fb:隨機標記中放入一堆引號,以隨機選項列表顯示頁面加載的隨機報價。您可以定期運行腳本來更新用戶配置文件中的引號集。如果引號對每個用戶都不是唯一的,則應該使用fb:ref句柄,因此您只需更新句柄內容,而不是每個用戶的配置文件。只需將用戶個人資料中的參考手柄放入即可。

3

這是我這樣做是爲了辦公行情應用:

  1. 把隨機引用的圖像內(很多選擇,這樣做在PHP中,我用GD和圖像函數在http://us2.php.net/manual/en/ref.image.php創建包含該報價的JPG)。
  2. 在瀏覽器中訪問此動態圖像會在每次刷新時爲您提供不同的隨機報價。
  3. 在Facebook個人資料框或標籤上,只需鏈接此圖像。
  4. 但是,Facebook在第一次加載圖像時緩存圖像,所以它永遠不會更新!
  5. 要強制Facebook上更新,必須使用現在通過URL訪問http://api.facebook.com/methods/fbml.refreshImgSrc,需要像其他所有API請求參數的access_token API函數fbml.refreshImgSrc圖像的URL 更新Facebook的圖像緩存前段時間有人發佈這個函數被棄用,但是這個決定被顛倒過來了!
  6. 設置緩存刷新代碼以定期運行。您可以對計劃任務(即cron作業)或應用程序中的每個綜合瀏覽量執行此操作,或者您可以想到的任何其他方式都可以使該方法以用戶請求圖像的相對頻率運行。
  7. 我還將配置文件中的圖像鏈接到應用程序中的頁面,該頁面將不斷重新加載新的隨機圖像。用戶通常會點擊此頁面(這會刷新每次加載時的圖像緩存),並且他們會錯覺圖像會不斷更新。
  8. 我更喜歡的另一種幻想是在配置文件框/選項卡中添加一個「刷新」鏈接,該鏈接指向刷新圖像緩存並立即返回到用戶配置文件的腳本,以便它實際上看起來只是刷新配置文件框/選項卡。

享受!

1

我很困惑。 Profiles boxesare all but gone。你現在不應該開發任何東西 - 現在無論如何它現在都會消失。

即使配置文件框仍然是建議的集成點,您無法按照您的要求更新它們。

+0

Facebook終於正式宣佈最終結束配置文件框。他們原本應該在今年年初離開。他們現在將在八月份完全消失。 – 2010-07-09 10:23:15

+1

好吧 - 但我們已經知道這是幾個月前的「2010年中期」 - 浪費時間開發一個你知道會消失的功能,IMO。 – 2010-07-09 14:21:22