web-dev-qa-db-fra.com

Demander à Facebook de re-gratter URL

Le og: l'image du site Web a été modifiée récemment. Le site contient plus de 100 pages, chacune contenant son propre og: image. Comment puis-je demander ou forcer Facebook à re-gratter toutes les pages, afin que l'image soit mise à jour? L'utilisation de l'outil de débogage de Facebook sera une tâche trop fastidieuse. Jusqu'à ce que le site de Facebook re-scrape, je ne serai pas en mesure de soumettre la collecte pour l'application.

14
curious_coder

Vous avez deux alternatives ici dans votre situation

  1. Selon la réponse de ysrb, parcourez la liste de vos URL avec l’outil Open Graph Debugger

  2. Ou attendez patiemment pendant 30 jours jusqu'à ce que Facebook ré-efface vos pages comme indiqué dans la documentation ici

Pourquoi et quand Facebook racle-t-il mon site?

Facebook doit supprimer les liens partagés avec Facebook pour savoir laquelle associer des informations de prévisualisation à afficher sur Facebook.com ou sur Facebook pour iOS et Android. Cela se produit tous les 30 jours pour s'assurer que les propriétés sont à jour. La page liée est également supprimée lorsque l’URL est entrée dans l’outil de débogage.

Facebook observe les en-têtes de cache sur vos URL - il examinera "Expires" et "Cache-Control" par ordre de préférence. Cependant, même si vous spécifiez une durée plus longue, Facebook supprimera votre page tous les 30 jours.

12
Anvesh Saxena

Vous pouvez forcer une nouvelle extraction via l'API, comme décrit ici: https://developers.facebook.com/docs/opengraph/using-objects/#update :

POST /?id={object-instance-id or object-url}&scrape=true

(Mais si vous n’avez pas une liste réelle des URL concernées, c’est un peu discutable. Vous pouvez alors attendre que cela se produise automatiquement, je suppose.)

33
CBroe
       $config = array(
            "appId" => 'APP_ID',
            "secret" => 'APP_SECRET');

        $fb = new Facebook($config);
        $r=$fb->api('/','POST',array(
            'id'=>PAGE_URL,
            'scrape'=>'true'
        ));
5
dev.meghraj

Sachez que Facebook requiert que les paramètres soient transmis via POST. Facebook ignore simplement les demandes GET.

Voici le code en C #.

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(
    "https://graph.facebook.com/?id="
    + HttpUtility.UrlEncode("http://www.example.com/index.html")
    + "&scrape=true");
httpRequest.Method = "POST";
using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse())
{
    using (Stream responsestream = httpResponse.GetResponseStream())
    {
        if (responsestream != null)
        {
            using (StreamReader bodyreader = new StreamReader(responsestream))
            {
                string fbResp = bodyreader.ReadToEnd();
            }
        }
    }
}
3
Doug S

curl --insecure " https://graph.facebook.com/?id=[YOUR-URL-TO-SCRAPE]&scrape=true "

curl devrait être capable de ssl (comme c'est https: // graph .. .)

2
Dusan

Vous pouvez essayer en boucle de la liste des URL et faire

curl "http://developers.facebook.com/tools/debug/og/object?q=$url"
1
ysrb