2010-01-11 90 views
2

我正在製作一個簡單的基於iframe的facebook應用程序。我有以下的代碼大小我的iframe:如何在iframe facebook應用程序中使用FB.Connect.streamPublish?

FB_RequireFeatures(["Connect"], function(){ 
    FB.XdComm.Server.init('/xd_receiver.htm'); 
    FB.CanvasClient.startTimerToSizeToContent(); 
    FB.CanvasClient.syncUrl(); 
}); 

我想補充一點,會顯示一個彈出,這將允許用戶發佈一個應用程序定義的圖像/鏈接到用戶的牆的鏈接。爲了讓事情最初起作用,我嘗試在點擊事件中使用以下代碼:

FB.Connect.streamPublish(''); 

但是,沒有任何反應。我試着添加:

FB.init(<?=API_KEY?>, '/xd_receiver.htm'); 

兩個FB_RequireFeatures內功能,在它之前,之後......沒有運氣。什麼都沒發生。沒有錯誤被拋出。沒有。有任何想法嗎?

+0

只是一個提示,如果你想做一個簡單的應用程序,第一次是很多更容易使FBML應用程序,而不是iFrame – 2010-02-09 23:09:57

回答

0

檢查是否有:(有的從http://wiki.developers.facebook.com/index.php/Connect/Setting_Up_Your_Site#Referencing_Facebook_Connect_on_Your_Site

  • 創建xd_receiver.htm,而且它是在你的領域
  • 包括FeatureLoader.js.php的根在的頂部BODY文檔
  • 中添加了問題的JavaScript(如FB_RequiresFeatures等)到您的文檔的底部

當前在我的應用程序運行還行代碼的一個例子:

<script type="text/javascript"> 
    window.onload = function() { 
     FB_RequireFeatures(["XFBML", "Connect"], function() { 
      FB.Facebook.init("...my api key...","xd_receiver.htm"); 
      FB.CanvasClient.syncUrl(); 
     }); 
    }; 
</script> 

可以省略「XFBML」從FB_RequireFeatures打電話,將路徑更改爲xd_receiver.htm過了,它應該工作正常。

此外,請仔細檢查應用程序的連接URL(通過Facebook中的開發人員應用程序設置)是否指向xd_receiver.htm文件的父項。因此,如果您的應用託管在http://www.mydomain.com上,然後查看您的代碼示例,則您的xd_receiver.htm將位於http://www.mydomain.com/xd_receiver.htm,並且您需要將http://www.mydomain.com作爲連接URL。

如果這仍然不起作用,請嘗試安裝Firebug(或類似的工具)來查看網絡流量。當我開始工作時,Facebook Javascript API就會失敗,只有通過檢查來回發送的請求,我發現Facebook不喜歡我的連接URL。

爲了測試它的所有工作,我會嘗試使用

FB.Connect.streamPublish(); 

而是你張貼的路線,因爲它應該彈出一個對話框,並作爲工作顯然給例。我不確定如果你只是傳遞一個空字符串作爲參數會發生什麼。

最後,有很多基於IFrame的Facebook應用程序 - 如果您發現一個您喜歡的東西,您可以隨時查看他們的Javascript以瞭解他們是如何實現的。換句話說,Facebook充滿了示例IFrame應用程序代碼。

+0

我需要包括'xd_receiver.htm'。 我沒有設置連接URL,因爲如果我設置它,每次去應用程序時,它都會將實際的URL加載到新窗口中,而不是在Facebook中的Canvas中。我已經試過做console.log(FB.Connect.streamPublish());並打印出「真實」。 我已經試過('')和(),並且我已經看到開發wiki上的兩個例子...不行。 我看過螢火蟲中的迴應,並且它對我的連結網址不滿意(因爲沒有設定)。但是,如果我設置了一個,那麼去應用程序會把我帶到異地。 – Gary 2010-01-12 16:10:00

+0

如果不設置連接URL,則無法使用FB javascript客戶端。當新窗口彈出時,streamPublish是否工作?如果是這樣,所有你需要做的就是修復'新窗口'的問題,一切都將按需要工作。 回想一下你在問題中包含了什麼,我認爲我們沒有足夠的努力來弄清楚爲什麼你會得到一個新窗口。你使用的是什麼瀏覽器?你能否提供更多的HTML返回或者你有我們可以訪問的URL來查看應用程序的運行? – Cyphus 2010-01-14 16:05:02

+0

我的意思是,如果我設置了Connect URL,那麼去應用會導致Facebook加載連接URL(與我的應用的URL相同),而不是將數據加載到Facebook Canvas中的iframe中。 – Gary 2010-01-14 20:52:22

0

@Cyphus

是的,當我說「要應用」我的意思是要在應用程序的頁面在Facebook上(apps.facebook.com/myapp)。目前,我的回調網址只設置在畫布上。只要我試圖使用我的回調URL和畫布和連接URL,任何時候我嘗試去應用程序,而不是加載在Facebook內的iframe,我被重定向到實際的回調URL本身。我不直接從我的服務器請求它,因爲這有點失敗了有Facebook應用程序的目的。

相關問題