Como limpar o cache do Facebook Sharer?

116

Usamos o link:

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

... para compartilhar uma página específica. No entanto, o Facebook Sharer usa a versão em cache das imagens e o título. Existe uma maneira de limpar rapidamente o cache do Facebook ou quanto tempo temos que esperar até que os dados sejam atualizados?

Eu coloquei <link rel='image_src' href='[preview image]' />entre as tags.

gato e rato
fonte

Respostas:

237

Eu encontrei uma solução para meu problema. Você pode acessar este site:

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

... em seguida, insira o URL da página que deseja compartilhar e clique em "depurar". Ele irá extrair automaticamente todas as informações em suas metatags e também limpar o cache.

gato e rato
fonte
1
Existe uma maneira de obter a mesma coisa, mas automaticamente com javascript? Meu site tem páginas que podem mudar frequentemente de nome. Eu gostaria de não esperar as 24 horas de reset do cache do Facebook, nem posso ir no Facebook Lint todas as vezes. Tentei usar uma solicitação ajax para o Facebook Lint (com developers.facebook.com/tools/debug/og/object?q= ... como url), mas a resposta é que o valor q (passado como parâmetro para a url acima) é não permitido por Access-Control-Allow-Origin.
Giovanni Bitliner
3
Se ainda estiver tendo problemas para atualizá-lo, tente adicionar um parâmetro de string de consulta aleatória ao final do seu URL.
JD Smith
2
Basta clicar no Fetch new scrape informationbotão
IvanRF
2
Busquei novas informações de scrape ... são os dados corretos, mas o compartilhador mostra os dados antigos. Há mais alguma coisa que possamos fazer?
Peege151
1
Se você tiver problemas com a imagem exibida no compartilhamento, tente alterar o URI da imagem.
totymedli de
10

Use api Existe uma API para forçar o Facebook a raspar uma página novamente?

$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
fonte
10

O Facebook trata cada url como único e armazena em cache a página com base nesse url, portanto, se você deseja compartilhar o url mais recente, a solução mais simples é adicionar uma string de consulta com o url que está sendo compartilhado. Em palavras simples, basta adicionar? V = 1 no final da url. Qualquer número pode ser usado no lugar de 1.

Dica de chapéu: Umair Jabbar

Martin Carstens
fonte
Acho que isso vai afetar o número de links que sua página recebeu, já que serão contados para cada versão, certo?
André Laszlo
3

Acho que esses dois links têm uma ampla discussão sobre as coisas relacionadas ao seu problema. fb: ref limpa os ganhos chamando

fbml.refreshRefUrl

como isso

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

Você pode estudar o material relacionado aqui fb: ref . Espero que funcione para você

Awais Qarni
fonte
3

A página para fazer isso está em https://developers.facebook.com/tools/debug/ e mudou ligeiramente desde algumas das outras respostas.

Cole o seu URL lá e clique em " Debug ". Em seguida, clique no botão " Buscar novas informações de rascunho " no campo de texto do URL e você estará pronto. Ele puxará as novas metatags de sua página, mas elas ainda serão armazenadas em cache, portanto, lembre-se de que você precisará fazer isso sempre que alterá-las. Isso é realmente crítico se você está brincando com as metatags para obter URLs compartilhados do FB para formatar da maneira que você deseja dentro do Facebook.

Matt Toigo
fonte
2

Esta resposta é destinada a desenvolvedores.

Limpar o cache significa que novos compartilhamentos desta página da web mostrarão o novo conteúdo que é fornecido nas tags OG. Mas apenas se a URL em que você está trabalhando tiver menos de 50 interações (curtidas + compartilhamentos). Também não afetará os links antigos para esta página da web que já foram postados no Facebook. Somente ao compartilhar a URL no Facebook novamente, a maneira como o Facebook mostra o link será atualizada.

A resposta do catandmouse está correta, mas você também pode fazer o Facebook limpar o cache OG (OpenGraph) enviando uma solicitação de postagem para graph.facebook.com (funciona para http e https no momento da redação desta resposta). Você não precisa de um token de acesso.

Uma solicitação de postagem para graph.facebook.com pode ter a seguinte aparência:

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

Em Perl, você pode usar o seguinte código onde a biblioteca Mojo :: UserAgent é usada para enviar e receber solicitações 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.");
        }
    }
}

O envio desta solicitação de postagem pelo terminal pode ser feito com o seguinte comando:

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

Anexe um? V = random_string ao url. Se você estiver usando essa ideia com o compartilhamento do Facebook, certifique-se de que o parâmetro og: url na resposta corresponda ao url que você está compartilhando. Isso funcionará com o Google Plus também.

Para o Facebook, você também pode forçar um novo rastreamento fazendo uma solicitação de postagem para https://graph.facebook.com

{id: url,
scrape: true}
Purushothaman Ramraj
fonte
Isso é exatamente o que eu estava procurando.
Bee
Não consegui fazer isso funcionar postando o JSON acima no Postman, mas postar uma string de texto bruto causou uma atualização:id=http://www.ridr.me&scrape=true
Philipp Sumi
1

Eu acabei de postar uma solução simples que leva 5 segundos aqui em um post relacionado aqui - depurador do Facebook:

resposta curta limpar o cache do site inteiro ... mude seus permalinks em um site worpdress nas configurações de permalinks para um personalizado. Acabei de adicionar um sublinhado.
/ _% postname% /
então o Facebook grava todos eles como novos urls, novos posts.

NowLiveLove
fonte
Isso é simples e legal. Infelizmente, ele deixa nomes de links indesejados.
Garavani
0

se você estiver usando o wordpress com um plugin de cache, certifique-se de limpar todos os seus caches. Além disso, certifique-se de que a imagem que você está usando tenha o tamanho recomendado do Facebook: 1200 (w) x 630 (h) ou 600 x 315.

csandreas1
fonte
0

Se você usou o gerenciador de wordpress ou plug-ins de cache, você deve LIMPAR SEU CACHE antes que a ferramenta de depuração do Facebook possa buscar novas informações!

Eu tenho puxado meu cabelo por semanas tentando descobrir por que as alterações que eu fiz não apareceram no depurador do Facebook por 24 horas !!!! A correção é que eu tenho que ir ao meu painel do wordpress, clicar no ícone godaddy na parte superior e clicar em "liberar cache". Acho que muitos hosters gerenciados do wordpress têm um cache para descobrir como limpá-lo e você terá ouro.

Tim Marchini
fonte
Limpar o cache do Wordpress não ajudará. Pelo menos para mim.
Garavani