[facebook] Facebook Sharer 캐시를 지우는 방법?

링크를 사용했습니다.

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

… 특정 페이지를 공유합니다. 그러나 Facebook Sharer는 캐시 된 버전의 이미지와 제목을 사용합니다. Facebook 캐시를 빠르게 지우는 방법이 있습니까? 아니면 데이터가 업데이트 될 때까지 얼마나 기다려야합니까?

나는 <link rel='image_src' href='[preview image]' />태그 사이에 배치 했습니다.



답변

내 문제에 대한 해결책을 찾았습니다. 이 사이트로 이동할 수 있습니다.

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

… 그런 다음 공유하려는 페이지의 URL을 입력하고 “디버그”를 클릭합니다. 메타 태그의 모든 정보를 자동으로 추출하고 캐시도 지 웁니다.


답변

API 사용 Facebook에서 페이지를 다시 스크랩하도록 강제하는 API가 있습니까?

$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 );


답변

Facebook은 각 URL을 고유 한 것으로 취급하고 해당 URL을 기반으로 페이지를 캐시하므로 최신 URL을 공유하려는 경우 가장 간단한 해결 방법은 공유되는 URL과 함께 쿼리 문자열을 추가하는 것입니다. 간단히 말해서 URL 끝에? v = 1을 추가하면됩니다. 1 대신 임의의 숫자를 사용할 수 있습니다.

모자 팁 : Umair Jabbar


답변

나는이 두 링크가 문제 관련 항목에 대한 광범위한 토론을 가지고 있다고 생각합니다. fb : ref 전화로 현금을 클리어

fbml.refreshRefUrl

이렇게

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

여기 fb : ref 에서 관련 내용을 공부할 수 있습니다 . 당신을 위해 일하기를 바랍니다


답변

이를 수행하는 페이지는 https://developers.facebook.com/tools/debug/ 에 있으며 다른 답변 중 일부 이후 약간 변경되었습니다.

거기에 URL을 붙여넣고 ” 디버그 “를 누르십시오 . 그런 다음 URL 텍스트 필드 아래 의 ” Fetch new scrape information “버튼을 누르면 모든 설정이 완료됩니다. 페이지에서 새로운 메타 태그를 가져 오지만 여전히 캐시되므로 변경할 때마다이 작업을 수행해야합니다. FB 공유 URL을 페이스 북 내에서 원하는 방식으로 포맷하기 위해 메타 태그를 사용하는 경우 이는 매우 중요합니다.


답변

이 답변은 개발자를위한 것입니다.

캐시를 지우면이 웹 페이지의 새로운 공유가 OG 태그에서 제공되는 새로운 콘텐츠를 보여줍니다. 하지만 작업중인 URL의 상호 작용이 50 개 미만인 경우에만 (좋아요 + 공유). 또한 이미 Facebook에 게시 된이 웹 페이지에 대한 이전 링크에는 영향을 미치지 않습니다. Facebook에서 URL을 다시 공유 할 때만 Facebook에서 링크를 표시하는 방식이 업데이트됩니다.

catandmouse의 답변은 정확하지만 graph.facebook.com에 게시물 요청을 보내 Facebook이 OG (OpenGraph) 캐시를 지우도록 할 수도 있습니다 (이 답변 작성 당시 http와 https 모두에서 작동 함). 액세스 토큰이 필요하지 않습니다.

graph.facebook.com에 대한 게시 요청은 다음과 같습니다.

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

Perl에서는 Mojo :: UserAgent 라이브러리가 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.");
        }
    }
}

다음 명령을 사용하여 터미널을 통해이 게시 요청을 보낼 수 있습니다.

curl -F id="<URL>" -F scrape=true graph.facebook.com


답변

URL에? v = random_string을 추가합니다. 이 아이디어를 Facebook 공유와 함께 사용하는 경우 응답의 og : url 매개 변수가 공유중인 URL과 일치하는지 확인하십시오. 이것은 Google Plus에서도 작동합니다.

Facebook의 경우 https://graph.facebook.com에 게시 요청을하여 강제로 재 크롤링 할 수도 있습니다.

{id: url,
scrape: true}