tutorial open example depurer debugger debug checker php facebook facebook-opengraph meta-tags

php - depurer - open graph example



Generar meta tags de Facebook Open Graph dinĂ¡micamente (5)

Cuando hace clic en el enlace Obtener código en sus tipos de objetos, ¿intentó pegar el código que le dio?
Intentaré pegar en tu web y luego, si funciona, replicaré la salida html.
Pruébalo sin la etiqueta DOCTYPE.
Aquí hay una muestra de lo que obtuve, y no veo estas etiquetas arriba: fb: app_id, no estoy seguro si hace una diferencia.
Además, ¿no debería el og: url también incluir las variables al final?

<head prefix = "og: http://ogp.me/ns#fb : http://ogp.me/ns/fb# website: http://ogp.me/ns/website# ">
<meta property = "fb: app_id" content = "1234567888">
<meta property = "og: url" content = "http://misitio.com/index.php?type=MY_APP_NAMESPACE%3Abistro">

Como el título implica, intento generar meta tags de Facebook Open Graph dinámicamente, pero no puedo hacerlo funcionar. ¿Es posible?

ACTUALIZAR:

Finalmente lo conseguí trabajando con la ayuda de @saccharine. El siguiente código me funciona:

<?php $params = array(); if(count($_GET) > 0) { $params = $_GET; } else { $params = $_POST; } // defaults if($params[''type''] == "") $params[''type''] = "restaurant"; if($params[''locale''] == "") $params[''locale''] = "en_US"; if($params[''title''] == "") $params[''title''] = "default title"; if($params[''image''] == "") $params[''image''] = "thumb"; if($params[''description''] == "") $params[''description''] = "default description"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# MY_APP_NAME_SPACE: http://ogp.me/ns/fb/MY_APP_NAME_SPACE#"> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <!-- Open Graph meta tags --> <meta property="fb:app_id" content="MY_APP_ID" /> <meta property="og:site_name" content="meta site name"/> <meta property="og:url" content="http://mysite.com/index.php?type=<?php echo $params[''type'']; ?>&locale=<?php echo $params[''locale'']; ?>&title=<?php echo $params[''title'']; ?>&image=<?php echo $params[''image'']; ?>&description=<?php echo $params[''description'']; ?>"/> <meta property="og:type" content="MY_APP_NAME_SPACE:<?php echo $params[''type'']; ?>"/> <meta property="og:locale" content="<?php echo $params[''locale'']; ?>"/> <meta property="og:title" content="<?php echo $params[''title'']; ?>"/> <meta property="og:image" content="http://mysite.com/img/<?php echo $params[''image'']; ?>.png"/> <meta property="og:description" content="<?php echo $params[''description'']; ?>"/> </head> </html>

La URL que estoy poniendo en el depurador de Facebook ahora puede incluir cualquiera de los parámetros dinámicos o incluso ninguno, todos o solo una selección y en cualquier orden como esta:
http://mysite.com/index.php?type=restaurant&title=luigis
o esto:
http://mysite.com/index.php?locale=de_DE&description=hi&type=bistro

Habiendo logrado eso: ahora puedo publicar acciones en la transmisión del usuario:

function postRestaurant() { FB.api(''me/MY_APP_NAMESPACE:have_lunch?/ start_time=2000-12-12T04:00:00&/ expires_in=7200&/ restaurant='' + encodeURIComponent(getRedirectURI() + ''?type=restaurant'' + ''&description=arnold'' + ''&title=stalone''), ''post'', function (response) { if (!response || response.error) { console.log(''postRestaurant: Error occured => '' + response.error.message); } else { console.log(''postRestaurant: Post was successful! Action ID: '' + response.id); } }); }

¡Funciona de maravilla! :]


Estoy bastante seguro de que Facebook ya no rastrea las URL con parámetros. Siempre "redirige" a una versión eliminada de la url.

En el ejemplo de OP:

http://example.com/index.php?type=restaurant&title=luigis

se convierte

http://example.com/index.php

independientemente de lo que hagas Lo más cercano que he visto a una explicación es this :

A URL with no session id or extraneous parameters. All shares on Facebook will use this as the identifying URL for this article.


Para Joomla Opengraph Meta dinámico:

<meta property="og:title" content="<?= $title = $this->getTitle(); ?>" /> <meta property="og:type" content="website" /> <meta property="og:url" content="<?= "http://YORUWEBSITE.com".$_SERVER[''REQUEST_URI'']; ?>" /> <meta property="og:image" content="http://YOURWEBSITE.com/images/stories/BIGIMAGE.jpg" /> <meta property="og:site_name" content="YOURWEBSITE.com" /> <meta property="fb:app_id" content="YOURFACEBOOKAPPIDNUMBER" /> <meta property="og:description" content="<?= $title = $this->getDescription(); ?>" />


Primero, quiero reiterar que estoy casi seguro de que su problema se debe al hecho de que la URL que está pasando al depurador no se genera dinámicamente. La etiqueta url actúa esencialmente como un redirector. A menos que sea exactamente el mismo (lo que significa que las metaetiquetas en el meta objeto url son las mismas que en la url que está ingresando) como la url que está probando, no obtendrá los resultados que está buscando.

La metaetiqueta

<meta property="og:url">

necesita ser generado dinámicamente El depurador se redirige a su página de índice predeterminada en lugar de la página generada dinámicamente.

Por ejemplo, asigno una identificación a cada objeto que estoy usando, así que tengo algo como lo siguiente

<meta property="og:url" content="http://mysite.com/index.php?id=<?php echo $_GET[''id''] ?>"/>

Paso en esa url exacta en el depurador, y así la página final que aterriza el depurador será esa url exacta.

Además, en lo siguiente

<meta property="og:type" content=""/>

¿cómo se genera dinámicamente la propiedad? ¿Recordó establecer en su código actual algo como lo siguiente?

<meta property="og:type" content="<?php echo _GET[''type] ?>"/>

También parece que está introduciendo todo en la url, lo cual es peligroso y puede causar dolores de cabeza enormes, que podría ser el problema aquí. En su lugar, empuje solo una cosa, p. Ej., Type = bistro y luego propague los datos necesarios de la base de datos.

Recomendaría generar dinámicamente la mayoría de las etiquetas OG basadas en un object_id. Almacene la información relevante de OG para cada object_id, y luego propagúelos cuando se tenga acceso a ellos. De esta manera, también puede expandir y editar fácilmente las etiquetas que usa cuando se actualiza OG.

Si tiene problemas con OG, no dude en publicarlos como nuevas preguntas en lugar de como garantizo que otras personas también tienen el mismo problema.


Sí, funciona como un amuleto, pero necesita algo de recodificación para mí. Tuve que crear una nueva página como esta:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# MY_APP_NAME_SPACE: http://ogp.me/ns/fb/MY_APP_NAME_SPACE#"> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <!-- Open Graph meta tags --> <meta property="og:title" content="<?= urldecode($_GET[''title'']) ?>" /> <meta property="og:type" content="article" /> <meta property="og:url" content="<?= "http://www.calsots.com".$_SERVER[''REQUEST_URI'']; ?>" /> <meta property="og:image" content="<?= $_GET[''image''] ?>" /> <meta property="og:site_name" content="Calsots.com" /> <meta property="fb:admins" content="MY_APP_ID" /> <meta property="og:description" content="<?= urldecode($_GET[''description'']) ?>" /> </head> </html>