2009-04-26 5 views
0

Ich versuche Benutzer Facebooker zu verwenden, um Geschichten auf Facebook zu veröffentlichen. Wenn ein Benutzer ein Formular auf meiner Website einreicht, verwende ich fb_user_action, um den Dialog anzuzeigen, der fragt, ob eine Geschichte veröffentlicht werden kann. Wenn das abgelehnt wird, möchte ich auf eine andere Seite umleiten.Facebooker: Redirect nach fb_user_action

Facebooks documentation for showFeedDialog spricht über den Fortsetzungsparameter. Es benötigt eine JavaScript-Funktion, die nach dem Schließen des Dialogs aufgerufen wird. Ich kann diese Funktion nicht aufrufen.

<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 %> 

Alles funktioniert einwandfrei, außer die Fortsetzungsfunktion wird nicht aufgerufen. Irgendwelche Vorschläge für was ich falsch mache?

Antwort

2

Ich graben gerade in diesem mehr. Ich glaube, das ist ein Facebook-Bug. Ich musste den Rückrufparameter in einen page.literal Anruf einwickeln. Die modifizierte Methode, die funktioniert, ist unter:

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 

ich mit dem Facebooker Entwickler folgen würde zu versuchen, dies in einer zukünftigen Version behoben.

+0

Dies wurde in Facebooker behoben und sollte in der nächsten Version verfügbar sein. – brantonb

0

Ok, ich habe Ruby noch nie in meinem Leben benutzt, aber etwas an diesem Facebookruf scheint mir falsch zu sein. Hier ist, was fb_user_action wie von Ihrem Link aussieht:

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 

Also, auf das, was ich über page.call aufblickte, dass mir sieht aus wie es Javascript wie folgt generieren:

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

jedoch die Unterschrift des showFeedDialog ist:

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

die Reihenfolge der Parameter, die die Facebooker fb_user_action Funktion für die Javascript erzeugt, scheint mir völlig falsch. Der Callback-Parameter sieht so aus, als würde er stattdessen durch eine Null ersetzt, so dass nichts jemals aufgerufen würde.

Was wäre, wenn Sie statt fb_user_action einfach page.call selbst verwenden, aber die Parameter in der richtigen Reihenfolge?

Wieder könnte ich die page.call und/oder Ruby-Syntax hier nicht verstehen. Aber ich überprüfe die Facebook-Funktion, da sich die FB-API ständig ändert.