Facebook Opengraph的动态图片og:image元标签

5

我想在Facebook上分享我的网站中的图片。图片可以是动态的,但其他元数据将保持不变。

是否有办法在OG:IMAGE标签中使用动态数据,或者我必须选择其他选项,如FB Post APIs?

2个回答

9
是和否。Facebook会对您的网站进行一次抓取,并缓存它找到的元数据,除非您明确地到这里并强制爬虫再次爬取您的网站。缓存通常会过期(也许在1-2天后?),因此在此缓存期外再次请求时,Facebook将再次爬取该网站。
您可以拥有一个动态生成的og:image meta标签,但它只会被读取一次(每个缓存期),并且只保存该图像的那个实例。
例如,如果用户A分享了您的页面,并且您的页面在og:image标签中返回imageA.png,那么该图像将与您页面的元数据相关联。
如果用户B在同一缓存期内分享相同的页面,Facebook将放弃元数据抓取,并假定imageA.png仍然是有效的og:image

1
让动态og:image在Facebook上动态显示的一种方法是在og:image src中添加cachebuster。因此,每次Facebook重新抓取页面(每24小时一次),它都会看到一个新的图像。 - j0nes

0

请查看这个Gist

每次更新og:image标签时,您应该ping Facebook重新抓取您的页面。

def share_facebook_fanpage(link,msg,PAGE_ID,OAUTH_ACCESS_TOKEN,apiversion='v2.8'):
    BASE_URL = "https://graph.facebook.com/%s" % apiversion
    POST_URL = "%s/%s/feed" % (BASE_URL, PAGE_ID)

    # force facebook scape the link first to avoid not showing thumb
    f = requests.post(BASE_URL, data={
        'id': link,
        'scrape': True,
        'access_token': OAUTH_ACCESS_TOKEN
    })

    # share the link
    r = requests.post(POST_URL, data={'access_token': OAUTH_ACCESS_TOKEN, 'link': link, 'message':msg})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接