2013-02-16 67 views
2

我開始在Heroku上託管我的第一個Facebook應用程序。我在Heroku上爲應用程序設置了一個應用程序,並在我自己的機器上本地運行了一個單獨的應用程序進行開發。目前,該應用程序(只有很少的功能)可以在localhost上運行。但我不明白,如果應用程序能夠像使用Facebook功能的本地主機上的典型畫布應用程序那樣運行。例如,請求對話框會在本地運行在畫布應用程序中。我應該在本地開發時使用該功能嗎?如果是這樣,我需要採取哪些措施來實現這一目標?本地開發Facebook畫布應用程序 - (MAMP,Codeigniter)

回答

2

但我不明白,如果應用程序應該能夠像與Facebook功能的本地主機的典型應用帆布運行

您的應用程序的行爲應該以同樣的方式無論是在本地主機上或在最終的生產服務器上。

Facebook對話框(請求,消息..)應該在您的本地(dev)機器上顯示,就像它們在現場服務器上一樣。在我的情況下,我做了這個工作,我設置了一個輔助「facebook應用程序」,其值爲App Domains,Site URLCanvas URL

這使您可以從本地主機運行您的應用程序。如果您的應用只有畫布,它將在iframe中運行(指向Site URL),但將顯示在Facebook中。

另外,如果您想查看任何Facebook模式框而不是彈出窗口,請確保您包含Facebook's JS API

您應該注意的唯一區別是,如果您通過FB API從本地開發站點共享頁面,Facebook將無法抓取您的站點並獲取任何需要的圖標,圖像或描述。

+0

@jordy你還有這個問題嗎?希望我能澄清一些事情! – Guillermo 2013-02-24 16:05:08

4

的差異
一個獨立的站點和應用程序的畫布之間的唯一真正的區別(或頁面標籤),你會看到的是,你不會有一個signed_request當您加載你的頁面中通過。

應用程序對話框仍然可以工作,但在彈出窗口而不是直接在頁面上。此外,如果您在Facebook應用設置「與Facebook登錄」(或移動網站)下設置您的本地開發URL(例如http://localhost:5000),您將能夠像登錄用戶一樣登錄。

還有一些你不能在服務器上測試的東西,比如facebook發送請求到你的網站以通知更新的實時更新。

可能還有一些其他的事情,但這是我現在可以考慮的事情。

本地工作
所以,我通常做的,就是在本地開發它。要管理丟失signed_request,我只提供一個存根,或者我只是不指望它存在,所以我的應用程序也可能用完Facebook。

對於登錄方法,我傾向於只在JS SDK依靠通過畫布應用程序大多數服務器端登錄的將依靠signed_request - 和enaway,我發現UX登錄更好的通過JS SDK。

然後,我只設置了兩個FB應用程序,一個分段和一個釋放。登臺應用程序指向我的本地人,以便我的Facebook允許連接。

在這一點上,它應該大部分工作正常!