假设您已经通过开放图谱协议的meta标签设置了网页的Facebook图像,如下所示:
<meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
如果您想用同名的另一张图片替换/更新该图片rock.jpg
,当您分享页面时,如何让Facebook相应地更新您的图片?强制Facebook使用此链接获取您页面的数据http://developers.facebook.com/tools/debug不会更新图片。
假设您已经通过开放图谱协议的meta标签设置了网页的Facebook图像,如下所示:
<meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
如果您想用同名的另一张图片替换/更新该图片rock.jpg
,当您分享页面时,如何让Facebook相应地更新您的图片?强制Facebook使用此链接获取您页面的数据http://developers.facebook.com/tools/debug不会更新图片。
这是我找到的解决此问题最一致的答案:https://dev59.com/dm025IYBdhLWcg3w1JeG#21468084
如果您懒得去那个链接,您可以用POST
一个ajax请求,带上您要清除的url:
$.post(
'https://graph.facebook.com',
{
id: 'http://www.site.com/my/share/url/',
scrape: true
},
function(response){
console.log(response);
}
);
Facebook会将你的图片存储到它们自己的服务器上,并缓存24小时。缓存延迟可能会在未来发生变化,因此要检查它,只需打开Facebook从你的图片创建的图像,并检查其HTTP头中的“max-age”值。因此,即使使用此链接http://developers.facebook.com/tools/debug强制获取数据,如果更改您的图像,Facebook也不会在24小时内更新其版本。
为了解决这个问题,如果需要立即查看更改的效果,您应该重命名您的图片。因此,如果旧版本是rock.jpg
,将其重命名为rock2.jpg
,然后使用此链接http://developers.facebook.com/tools/debug让Facebook从您的更新的图像创建一个新图像。这将立即更新您网页的Facebook分享中的图片。
<meta property="og:type" content="website" />
=> https://www.example.org(父级页面)<meta property="og:type" content="website" />
=> https://www.example.org/sub-page/<meta property="og:type" content="website" />
=> https://www.example.org/sub-page/child-2//sub-page/
和/child-2/
将继承父级页面的og:image
。
这些不是“所有网站”,其中1个是网站,其他是文章。
如果您这样做,Facebook 将认为所有这些都是规范的,并将在所有这些中放置第一个 og:image。(试试看,您会发现)- 如果您将 og:url 设置为根域或父域,您已经告诉 Facebook 它们都是规范的。(有很好的理由,但这是另一个话题)<meta property="og:type" content="article" />
=> https://www.example.org/sub-page/
- <meta property="og:type" content="article" />
=> https://www.example.org/sub-page/child-2/
如果您现在这样做,Facebook 将会给您更少的问题,以便爬取您的新图片。
?scrape=true&id=URL_TO_SCRAPE
放入POST字段中即可。 - divillysausageshttps://graph.facebook.com/v2.6
,则需要一个访问令牌。这可以是Facebook应用程序访问令牌,格式为{APP_ID}|{APP_SECRET}
。 - Nour Wolf$.post( 'https://graph.facebook.com', { id: 'http://example.com', scrape: true, access_token: "{APP_ID}|{APP_SECRET}" }, function(response){ console.log(response); } );
然而,这并没有更新旧的分享,只有新的分享。 :( - Eugen Baryshnikau