¿Cómo borrar la caché de Facebook Sharer?

116

Usamos el enlace:

http://www.facebook.com/sharer.php?u=[shared URL]

... para compartir una página en particular. Sin embargo, Facebook Sharer usa la versión en caché de las imágenes y el título. ¿Hay alguna forma de borrar rápidamente la caché de Facebook o cuánto tiempo tenemos que esperar hasta que se actualicen los datos?

Coloqué <link rel='image_src' href='[preview image]' />entre las etiquetas.

Gato y ratón
fuente

Respuestas:

237

Encontré una solución a mi problema. Puedes ir a este sitio:

https://developers.facebook.com/tools/debug

... luego ingrese la URL de la página que desea compartir y haga clic en "depurar". Extraerá automáticamente toda la información de tus metaetiquetas y también borrará el caché.

Gato y ratón
fuente
1
¿Hay alguna manera de obtener lo mismo pero automáticamente con javascript? Mi sitio tiene páginas que pueden cambiar su nombre a menudo. Me gustaría no esperar las 24 horas de restablecimiento de la caché de Facebook, ni puedo ir a Facebook Lint cada vez. Intenté usar una solicitud ajax a Facebook Lint (con developers.facebook.com/tools/debug/og/object?q= ... como url) pero la respuesta es que el valor q (pasado como parámetro a la url anterior) es no permitido por Access-Control-Allow-Origin.
Giovanni Bitliner
3
Si aún tiene problemas para que se actualice, intente agregar un parámetro de cadena de consulta aleatoria al final de su URL.
JD Smith
2
Simplemente haga clic en el Fetch new scrape informationbotón
IvanRF
2
He obtenido nueva información de scrape ... veo que son los datos correctos, pero el que comparte muestra datos antiguos. ¿Hay algo más que podamos hacer?
Peege151
1
Si tiene problemas con la imagen que se muestra en el recurso compartido, intente cambiar el URI de la imagen.
totymedli
10

Use api ¿Existe una API para obligar a Facebook a raspar una página nuevamente?

$furl = 'https://graph.facebook.com';

$ch = curl_init();

curl_setopt( $ch, CURLOPT_URL, $furl );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POST, true );
$params = array(
    'id' => '<update_url>',
    'scrape' => true );
$data = http_build_query( $params );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );

curl_exec( $ch );
$httpCode = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
Vladimir Pak
fuente
10

Facebook trata cada URL como única y almacena en caché la página en función de esa URL, por lo que si desea compartir la última URL, la solución más simple es agregar una cadena de consulta con la URL que se comparte. En palabras simples, simplemente agregue? V = 1 al final de la URL. Se puede usar cualquier número en lugar de 1.

Punta de sombrero: Umair Jabbar

Martin Carstens
fuente
Creo que esto afectará la cantidad de enlaces que ha recibido tu página, ya que se contarán para cada versión, ¿verdad?
André Laszlo
3

Creo que estos dos enlaces tienen una amplia discusión sobre el tema relacionado con su problema. fb: ref borrar cobros llamando

fbml.refreshRefUrl

Me gusta esto

<tt> fbml.refreshRefUrl ("http://www.mysite.com/someurl.php")

Puedes estudiar las cosas relacionadas desde aquí fb: ref . Espero que te funcione

Awais Qarni
fuente
3

La página para hacer esto está en https://developers.facebook.com/tools/debug/ y ha cambiado ligeramente desde algunas de las otras respuestas.

Pegue su URL allí y presione " Depurar ". Luego presione el botón " Obtener nueva información de scrape " debajo del campo de texto de la URL y debería estar listo. Extraerá las metaetiquetas nuevas de su página, pero aún se almacenarán en caché, así que tenga en cuenta que deberá hacer esto cada vez que las cambie. Esto es realmente crítico si está jugando con las metaetiquetas para que las URL compartidas de FB tengan el formato que desea dentro de Facebook.

Matt Toigo
fuente
2

Esta respuesta está destinada a desarrolladores.

Borrar la caché significa que los nuevos recursos compartidos de esta página web mostrarán el nuevo contenido que se proporciona en las etiquetas OG. Pero solo si la URL en la que está trabajando tiene menos de 50 interacciones (me gusta + acciones). Tampoco afectará los enlaces antiguos a esta página web que ya se han publicado en Facebook. Solo cuando vuelva a compartir la URL en Facebook, se actualizará la forma en que Facebook muestra el enlace.

La respuesta de catandmouse es correcta, pero también puede hacer que Facebook borre el caché de OG (OpenGraph) enviando una solicitud de publicación a graph.facebook.com (funciona tanto para http como para https al momento de escribir esta respuesta). No necesita un token de acceso.

Una solicitud de publicación en graph.facebook.com puede tener el siguiente aspecto:

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: graph.facebook.com
Content-Length: 63
Accept-Encoding: gzip
User-Agent: Mojolicious (Perl)

id=<url_encoded_url>&scrape=true

En Perl, puede usar el siguiente código donde se usa la biblioteca Mojo :: UserAgent para enviar y recibir solicitudes HTTP:

sub _clear_og_cache_on_facebook {
    my $fburl     = "http://graph.facebook.com";
    my $ua        = Mojo::UserAgent->new;
    my $clearurl  = <the url you want Facebook to forget>;
    my $post_body = {id => $clearurl, scrape => 'true'};
    my $res       = $ua->post($fburl => form => $post_body)->res;
    my $code      = $res->code;
    unless ($code eq '200') {
        Log->warn("Clearing cached OG data for $clearurl failed with code $code.");
        }
    }
}

El envío de esta solicitud de publicación a través del terminal se puede hacer con el siguiente comando:

curl -F id="<URL>" -F scrape=true graph.facebook.com
Thorkil Værge
fuente
1

Agrega un? V = random_string a la URL. Si está utilizando esta idea con compartir en Facebook, asegúrese de que el parámetro og: url en la respuesta coincida con la url que está compartiendo. Esto también funcionará con Google Plus.

Para Facebook, también puede forzar un nuevo rastreo haciendo una solicitud de publicación en https://graph.facebook.com

{id: url,
scrape: true}
Purushothaman Ramraj
fuente
Esto es exactamente lo que estaba buscando.
Bee
No pude hacer que esto funcionara publicando el JSON anterior en Postman, pero la publicación de una cadena de texto sin formato causó una actualización:id=http://www.ridr.me&scrape=true
Philipp Sumi
1

Acabo de publicar una solución simple que toma 5 segundos aquí en una publicación relacionada aquí: depurador de Facebook: Borrar la

respuesta corta de la caché del sitio completo ... cambie sus enlaces permanentes en un sitio de Worpdress en la configuración de enlaces permanentes a uno personalizado. Acabo de agregar un guión bajo.
/ _% postname% /
luego Facebook los raspa a todos como nuevas URL, nuevas publicaciones.

NowLiveLove
fuente
Esto es simple y genial. Desafortunadamente, deja nombres de enlaces no deseados.
Garavani
0

Si está utilizando wordpress con un complemento de caché, asegúrese de borrar todos sus cachés. También asegúrese de que la imagen que está utilizando tenga el tamaño recomendado para Facebook: 1200 (ancho) x 630 (alto) o 600 x 315.

csandreas1
fuente
0

Si usó WordPress administrado o complementos de almacenamiento en caché, ¡debe BORRAR SU CACHÉ antes de que la herramienta de depuración de Facebook pueda obtener nueva información!

¡Me he estado tirando de los pelos durante semanas descubriendo por qué los cambios que hice no aparecerían en el depurador de Facebook durante 24 horas! La solución es que tengo que ir a mi panel de WordPress, hacer clic en el icono de GoDaddy en la parte superior y hacer clic en "Vaciar caché". Creo que muchos hosters de WordPress administrados tienen un caché para averiguar cómo borrarlo y estarás dorado.

Tim Marchini
fuente
Limpiar la caché de Wordpress no ayudará. Al menos para mi.
Garavani