2012-08-27 133 views
2

我們正在開發一個使用Facebook Graph API的Web應用程序。當然,我們有一個Facebook應用程序,爲了這個問題我將稱之爲「MyApp」。Facebook開發圖在開發環境

爲了讓我們的開發人員能夠在本地運行和調試服務器,我們有一個總是沙盒的Facebook應用程序,我將其稱爲「MyAppDev」。此應用程序的域名是localhost:8080。這使得在開發機器上進行Facebook認證成爲可能。這樣,我們爲開發和生產提供了一組不同的認證令牌,我們有很短的開發週期,並且每個人都很開心。

但是,當涉及到開放圖,事情會變得有點詭計。這是因爲Open Graph對象必須由Facebook將要訪問的真實URL支持。因此,我們無法在MyAppDev上真正定義對象和動作(如果我們在MyAppDev中使用生產URL,它將與開發人員機器中的數據庫不一致)。所以似乎唯一的選擇是開發人員共同使用測試服務器進行開發,第三個應用程序稱爲MyAppTest。但是這有一些缺點:

  1. 這打破了開發人員能夠從他們自己的環境中運行事物的模型。我懷疑它會導致開發週期變慢。
  2. 沒有自動的方法來同步Open Graph配置(至少我沒有意識到),所以我們需要手動將配置(例如,動作/對象)從MyAppTest複製到MyApp。這很容易出錯。

所以我的問題是,開放圖形應用程序的開發和測試的常見做法是什麼?這就像我描述的那樣嗎?有沒有更好的辦法?

由於提前,
的Yaniv

回答

3

There's no automatic way to synchronize Open Graph configurations (at least not that I've aware of) so we'll need to manually copy the configuration (e.g., actions/objects) from MyAppTest to MyApp. This is quite error prone.

呀,這真的是一個p.i.t.a. - 我希望Facebook想出一個更好的方式來做到這一點;至少一個「同步」功能會很好。對於測試OG對象 - 唯一可行的解​​決方案是從開發人員自己的機器上測試,我可以看到,就是讓該機器可以從互聯網上訪問;使用某種類似的DynDNS服務或類似的東西。

+0

所以我猜想你有有一套相同的動作和對象爲督促開發/測試一個單獨的應用程序,並且你確定他們是同步?那麼每個開發者都可以通過互聯網訪問他們的機器?這是非常普遍的做法嗎? – yby

+0

至少對我們來說,我們沒有看到有任何方法可以單獨開發/生產應用程序,並手動更新OG設置 - 就像我說的PITA,但在測試新東西時與生產應用程序混合在一起當然是不可能的... – CBroe

0

我們在協同開發環境中遇到同樣的問題。至少我們可以從我們的本地副本對Facebook進行身份驗證,但發佈故事時我們無法從FB.api()獲得成功回覆。

這是特定的錯誤:

enter image description here

我可以借用拉吉拉索提出的解決方案的一部分。我們還沒有測試過這個解決方案,但我們一定會這樣做。

The solution to this problem is either deploy your app online or allow localhost tunneling so that facebook can access it. I prefer localhost tunneling when working in my development environment.

有關更多細節,參觀Raj的website