og:网站的图片最近已更改。该网站包含超过100个页面,每个页面包含其各自的og:image。我怎么能要求或强迫facebook重新抓取所有页面,以便图像得到更新?使用facebook调试工具将是太繁琐的任务。在facebook重新搜索网站之前,我将无法为该应用提交收藏。
答案 0 :(得分:33)
您可以通过API强制重新抓取,如下所述:https://developers.facebook.com/docs/opengraph/using-objects/#update:
POST /?id={object-instance-id or object-url}&scrape=true
(但如果你没有受影响网址的真实列表,这有点没有实际意义。那么你只能等到它自动发生,我想。)
答案 1 :(得分:12)
在您的情况下,您有两种选择
根据ysrb的答案循环使用Open Graph Debugger工具列出您的网址
耐心等待30天,直到Facebook重新抓取您的文件,如文档here中所述
Facebook为什么以及何时抓住我的网站?
Facebook需要抓取与Facebook共享的链接,以了解将哪些链接预览信息显示在Facebook.com或Facebook for iOS和Android上。这种情况每30天发生一次,以确保属性是最新的。将URL输入调试器工具时,也会抓取链接页面。Facebook会在您的网址上观察缓存标头 - 它会按优先顺序查看“过期”和“缓存控制”。但是,即使您指定的时间较长,Facebook也会每30天抓一次页面。
答案 2 :(得分:5)
$config = array(
"appId" => 'APP_ID',
"secret" => 'APP_SECRET');
$fb = new Facebook($config);
$r=$fb->api('/','POST',array(
'id'=>PAGE_URL,
'scrape'=>'true'
));
答案 3 :(得分:3)
请注意,Facebook要求参数通过POST
传递。 Facebook只是忽略GET
次请求。
以下是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();
}
}
}
}
答案 4 :(得分:2)
curl --insecure" https://graph.facebook.com/?id=[YOUR-URL-TO-SCRAPE]&scrape=true"
卷曲应该是ssl能力的(因为它是https://graph..。)
答案 5 :(得分:1)
您可以从网址列表中尝试循环,然后执行
curl "http://developers.facebook.com/tools/debug/og/object?q=$url"