2009-04-26 22 views
0

我在嘗試使用Facebooker將故事發布到Facebook。當用戶在我的網站上提交表單時,我使用fb_user_action來顯示對話框,詢問是否可以發佈故事。當它被解僱時,我想重定向到不同的頁面。Facebooker:在fb_user_action後重定向

Facebook的documentation for showFeedDialog談論延續參數。它需要一個JavaScript函數,將在對話框關閉後調用。我無法獲得該功能。

<script language="javascript"> 
var continuation = function() { 
    location.href = 'http://target-url.com'; 
} 
</script> 

<% init_fb_connect "XFBML","Api" do %> 
    <%= fb_user_action(@action, @message, @prompt, 'continuation') %> 
<% end %> 

除了繼續函數沒有被調用之外,一切都很完美。任何建議我做錯了什麼?

回答

2

我剛剛深入瞭解這一點。我相信這是一個Facebooker錯誤。我必須在call.literal調用中包裝回調參數。該作品的修改方法如下:

def fb_user_action(action, user_message = "", prompt = "", callback = nil) 
    update_page do |page| 
    page.call "FB.Connect.showFeedDialog",action.template_id,action.data,action.target_ids,action.body_general,nil,page.literal("FB.RequireConnect.promptConnect"),page.literal(callback),prompt,user_message 
    end 
end 

我會跟進的Facebooker開發商試圖讓這個固定在未來的版本。

+0

這已在Facebooker中修復,應在下一版本中提供。 – brantonb 2009-08-29 19:10:27

0

好吧,我從來沒有在我的生活中使用Ruby,但有關Facebooker電話的事情對我來說看起來不對。下面是fb_user_action看起來像你的鏈接:

def fb_user_action(action, user_message = "", prompt = "", callback = nil) 
    update_page do |page| 
    page.call "FB.Connect.showFeedDialog",action.template_id,action.data,action.target_ids,action.body_general,nil,page.literal("FB.RequireConnect.promptConnect"),callback,prompt,user_message 
    end 
end 

因此,基於我擡頭約page.call,這看起來對我來說,它會生成JavaScript這樣的:

FB.Connect.showFeedDialog(template_id,data,target_ids,body_general,nil,promptConnect,callback,prompt,user_message); 

然而, showFeedDialog的簽名是:

FB.Connect.showFeedDialog(template_id,data,body_general,target_ids,callback,prompt,user_message) 

的Facebooker fb_user_action函數生成的JavaScript中的參數的順序似乎完全是我錯了。回調參數看起來會被替換爲nil,所以什麼都不會被調用。

如果不是調用fb_user_action,而是自己使用page.call,但參數的順序是正確的呢?

同樣,我可能無法理解page.call和/或Ruby語法。但是我會仔細檢查Facebook的功能,因爲FB API一直在變化。