How to clear Facebook Sharer cache?

后端 未结 10 1667
心在旅途
心在旅途 2020-11-30 17:59

We used the link:

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

...to share a particular page. However, Facebook Sharer uses the cache

相关标签:
10条回答
  • 2020-11-30 18:41

    Use api Is there an API to force Facebook to scrape a page again?

    $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 );
    
    0 讨论(0)
  • 2020-11-30 18:44

    I found a solution to my problem. You could go to this site:

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

    ...then put in the URL of the page you want to share, and click "debug". It will automatically extract all the info on your meta tags and also clear the cache.

    0 讨论(0)
  • 2020-11-30 18:44

    This answer is intended for developers.

    Clearing the cache means that new shares of this webpage will show the new content which is provided in the OG tags. But only if the URL that you are working on has less than 50 interactions (likes + shares). It will also not affect old links to this webpage which have already been posted on Facebook. Only when sharing the URL on Facebook again will the way that Facebook shows the link be updated.

    catandmouse's answer is correct but you can also make Facebook clear the OG (OpenGraph) cache by sending a post request to graph.facebook.com (works for both http and https as of the writing of this answer). You do not need an access token.

    A post request to graph.facebook.com may look as follows:

    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
    

    In Perl, you can use the following code where the library Mojo::UserAgent is used to send and receive HTTP requests:

    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.");
            }
        }
    }
    

    Sending this post request through the terminal can be done with the following command:

    curl -F id="<URL>" -F scrape=true graph.facebook.com
    
    0 讨论(0)
  • 2020-11-30 18:45

    Facebook treats each url as unique and caches the page based on that url, so if you want to share the latest url the simplest solution is to add a query string with the url being shared. In simple words just add ?v=1 at the end of the url. Any number can be used in place of 1.

    Hat tip: Umair Jabbar

    0 讨论(0)
提交回复
热议问题