7

Por alguna razón, el rastreador de Facebook está activando la respuesta JSON en las acciones de mis rieles. Esto hace que la acción simplemente devuelva una representación json del objeto, sin el marcado html normal + etiquetas de gráfico abierto. He probado esto con rieles 3.2.6. Utilizo el Facebook Facebook Open Graph Debugger para ver lo que está viendo el raspador: http://developers.facebook.com/tools/debug.facebook open graph rastreador activando la respuesta json en las acciones de los raíles

El código es muy simple. Imagine una simple acción de "mostrar" para un objeto, por ejemplo, un Usuario. Termina con:

respond_to do |format| 
    format.js { render :json => @this.to_json } 
    format.html 
end 

El facebook rastreador está desencadenando los format.js, lo que provoca las etiquetas del gráfico abiertas a no ser prestados. ¿Alguna idea de por qué esto podría pasar o cómo solucionarlo? Gracias.

Respuesta

15

Ok por lo que Facebook envía una cabecera acepta de

*/* 

Dado que no se solicita formato específico, rieles simplemente se cae el bloque respond_to en orden. Si usted enumera sus js por primera vez en el bloque respond_to como rieles inferiores responderá al rastreador abierta facebook con JSON, que no va a funcionar:

respond_to do |format| 
    format.js { render :json => @this.to_json } 
    format.html 
end 

Sólo tiene que activar la orden de modo de raíles por defecto responde con HTML:

respond_to do |format| 
    format.html 
    format.js { render :json => @this.to_json } 
end 

No estoy seguro de por qué Facebook no especifica el formato que están buscando ... me parece bastante idiota. Espero que esto sea útil para alguien en el camino.

+0

También hay agentes de usuario "reales" que dicen que aceptarán */* - por ejemplo (IIRC) viejo IE hará eso en una página de recarga. Así que quizás lo mejor sea configurar su aplicación para que sirva HTML como la prioridad número 1 de todos modos. – CBroe

+0

Esto no parece funcionar, intenté varios pedidos para format.html, format.js y format.json. Parece que Rails está interpretando 'HTTP_ACCEPT' */* como format.json. ¿De alguna manera puedo arreglar esto? Publiqué mi pregunta aquí: http://stackoverflow.com/questions/12094683/facebook-open-graph-action-rails-return-json-or-html – Dean

2

Compruebe qué encabezados de solicitud HTTP está enviando el rastreador de Facebook, especialmente el Acepte el encabezado.

Bien podría ser que envíen un valor que permita que su aplicación crea que tiene que enviar algo diferente al resultado HTML normal.

+0

Parece que acepta es "*/*". ¡Vota por señalarme en la dirección correcta! Responda abajo. – Marc

Cuestiones relacionadas