Facebooker: Redirigir después de fb_user_action

votos
0

Intento usar Facebooker para publicar historias en Facebook. Cuando un usuario envía un formulario en mi sitio, estoy usando fb_user_action para mostrar el cuadro de diálogo que pregunta si se puede publicar una historia. Cuando se descarta, quiero redirigir a una página diferente.

La documentación de Facebook para showFeedDialog habla sobre el parámetro de continuación. Se necesita una función de JavaScript que se llamará después de que se desestime el diálogo. No puedo hacer que se llame a esa función.

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

Todo funciona perfectamente, excepto que la función de continuación no se llama. ¿Alguna sugerencia de lo que estoy haciendo mal?

Publicado el 26/04/2009 a las 06:32
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0

Ok, nunca he usado Ruby en mi vida, pero algo acerca de esa llamada de Facebook me parece incorrecto. Así es como se ve fb_user_action desde su enlace:

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

Entonces, basado en lo que busqué sobre page.call, me parece que generará javascript como este:

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

Sin embargo, la firma de showFeedDialog es:

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

El orden de los parámetros que genera la función fb_user_action de Facebooker para el Javascript me parece completamente incorrecto. El parámetro de devolución de llamada parece que en su lugar se reemplazaría por un cero, por lo que nunca se llamaría a nada.

¿Qué pasa si en lugar de llamar a fb_user_action, acaba de utilizar page.call, pero con los parámetros en el orden correcto?

Nuevamente, podría estar fallando en entender la sintaxis de page.call y / o Ruby aquí. Pero verificaría esa función de Facebooker, ya que la API de FB cambia todo el tiempo.

Respondida el 26/04/2009 a las 07:24
fuente por usuario

votos
2

Solo busqué más. Creo que este es un error de Facebooker. Tuve que ajustar el parámetro de devolución de llamada en una llamada page.literal. El método modificado que funciona es el siguiente:

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

Seguiré con el desarrollador de Facebooker para tratar de arreglar esto en una versión futura.

Respondida el 26/04/2009 a las 18:45
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more