2011-12-22 6 views
6

He definido "libro" como un objeto gráfico abierto en mi aplicación de Facebook. Un libro es una unidad lógica, y el usuario puede ver un libro de diferentes maneras en la aplicación. Sin embargo, no hay una sola URL en mi aplicación que corresponda a un solo libro.¿Tiene un objeto de gráfico abierto que corresponda a una página visible para el usuario?

Pensé que sería capaz de tener una URL que escupe metadatos de gráficos abiertos en Facebook detrás de las escenas. Por ejemplo, http://www.example.com/opengrpah/object_book.php?id=3265 devolvería el título, el autor y otra información para un libro, pero en realidad no sería visible para el usuario.

Sin embargo, parece que Facebook usa el objeto URL para las acciones que involucran el objeto. Si creo una acción relacionada con el libro (por ejemplo, agregar un libro), si alguien hace clic en el enlace del ticker irá a la URL object_book.php, en lugar de a una página de la aplicación real. Por lo tanto, verán los metadatos pero nada útil.

¿Esto es por diseño? Ciertamente, un objeto no debería tener que corresponder a una sola página visible para el usuario. ¿No podemos tener datos de objetos extraídos de una URL, pero hacer que ese objeto se muestre al usuario dentro del contexto de una aplicación?

+0

Me encuentro con el mismo problema aquí. Al final, ¿cómo lo hiciste? – ksol

+0

ksol, no encontré una respuesta. Estoy reorganizando mi aplicación para tener 1 página por objeto. Creo que es un diseño incorrecto, pero tengo que hacerlo para poder usar la línea de tiempo. – Garth

+0

Parece que no hay forma de lograr lo que queremos por ahora, al menos. Terminé usando un controlador específico para todos mis objetos OG, luego hago una redirección a través de JS. Parece ser la única forma en este momento – ksol

Respuesta

2

¿Qué tal si nos redirigimos desde su URL de objeto Open Graph a la página de la aplicación real? ¿O qué tal diseñar sus páginas de aplicaciones para proporcionar metadatos de Open Graph?

Creo que esto podría ser una solución difícil.

+0

Redirigir es técnicamente factible, pero es feo, y preferiría evitarlo. Proporcionar metadatos de Open Graph en la aplicación requeriría un rediseño completo, ya que es una aplicación AJAX sin páginas fijas para cada objeto. Estoy un poco sorprendido por la aparente suposición implícita en Open Graph de que las páginas de objetos se asignan a páginas de usuario. Tendría sentido en 1995 cuando la Web era estática, pero ahora con contenido dinámico no es así. – Garth

+0

De acuerdo con su comentario, creo que sus objetos (pueden ser libros) en su aplicación no pueden ser accedidos por una 'URL' específica. ¿Derecha? Si es así, eso significa que su diseño es incorrecto. Creo que la decisión de diseño de Facebook que mencionas en tu comentario es totalmente correcta.Se debe poder acceder a un 'objeto' mediante una URL específica, y puede proporcionar metadatos sobre ese objeto en ese manejador de URL. AJAX no significa que no necesite proporcionar URL para objetos. –

+0

Semun, AJAX significa que no tiene que proporcionar URL accesibles para el usuario para los objetos. En mi aplicación, por ejemplo, las listas de libros se muestran en una página, pero los libros individuales se muestran en un div flotante en la página que está poblada por llamadas AJAX. Como otro ejemplo, un juego podría tener muchos objetos que deberían existir como objetos abiertos de gráfico, pero no hay páginas visibles para el usuario que se correspondan con ellos. – Garth

0

En la aplicación en la que estoy trabajando tuvimos un problema similar porque es una aplicación FB Canvas, por lo que si el og: url para nuestros objetos es algo como http://apps.facebook.com/our_namespace/?my_first_obj=0, FB ve la aplicación en lugar del objeto cargado en la aplicación. Ahí es donde finalmente queremos que las personas aterricen, pero tuvimos que proporcionar una URL directa a nuestra aplicación que proporcionó las metaetiquetas adecuadas, al igual que su situación. Simplemente poner esto en la cabeza de dichas páginas:

<script> 
    try { 
     if (top.location.href === window.location.href) { 
      window.location.replace("http://apps.facebook.com/our_namespace/"+window.location.search); 
     } 
    } catch(e) {} 
</script> 

Así que si alguien se envía directamente a esa página, se les redirige inmediatamente a nuestra aplicación lienzo, pero rascador de Facebook todavía puede obtener los metadatos correctos sobre el objeto .

0

Tuve un problema similar y terminé con 2 capas para mis objetos. Uno es el objeto "maestro", que en realidad es el objeto (libro en tu caso, objetivo en el mío). Luego, tengo otro objeto "usuario", que en realidad es una asociación entre el objeto maestro y un usuario. Este objeto de usuario tiene la url como mysite/user/object y es lo que publico en el gráfico fb con la acción "add".

Cuestiones relacionadas