Facebook发送对话框无法显示预览图片。

3
我想使用Facebook SendDialog向我的朋友发送一张图片。 在我的应用程序中有很多图片,如果用户选择了一张图片,我的应用程序将会创建一个HTML, 并更新HTML的meta标签为:
<meta property="fb:app_id" content="1234567890" />
<meta property="og:type" content="momantest:picture" />
<meta property="og:url" content="myhostdomain.com" />
<meta property="og:title" content="Mytitle" />
<meta property="og:description" content="BlahBlah123!" />
<meta property="og:image" content="The picture use just selected" />

把这个名为test1.html的HTML保存下来并上传到我的服务器上。
我使用JSSDK:
FB.ui({
       method:'send',
       link : 'https://myhostdomail.com/test1.html'
    });

发送对话框无法显示预览图片!!!!
但是如果 test1.html 是五分钟之前创建的,然后我使用发送对话框...预览图片会显示...
所以问题是,如果我创建一个 HTML 文件仅仅几秒钟,然后使用 SendDialog,预览图片就无法显示。但是如果这个 HTML 文件已经存在了 5 分钟,并使用 SendDialog,则可以显示预览图片。
为什么会这样?这是一个 bug 吗?
是否有可能在刚刚创建的 HTML 文件中,发送对话框能够显示预览图片!
哦,没错,我还使用了对象调试工具来检查 URL,它响应 206,标题、描述和图像都正常... 但是发送对话框就是无法显示预览图片。
任何答案都将不胜感激。谢谢!
1个回答

1
如果每次有人想要发送图片时都覆盖元标记,这样不起作用,因为Facebook在第一次共享链接时缓存元数据。
你需要做的是为每个分享使用唯一的URL,以便数据保持完整且独特。例如:
1. 用户1想分享image1.jpg。然后创建share1.html并添加适当的元数据以供此分享使用。 2. 然后,当用户1想要分享image2.jpg时。您创建带有新元数据的share2.html,并分享此内容。 3. 如果用户2也想分享image1.jpg,则可以重复使用share1.html,因为元数据将相同。

我知道Facebook的缓存机制,所以在创建HTML时,我会给每个HTML添加一个随机数,例如:test1.html?v=231412,这样就可以解决问题了。有趣的是,当我使用分享对话框时,预览图片显示出来了...!!! 只有发送对话框,预览图片无法显示,这让我很疯狂!不管怎样,感谢你的回答~! - imtns
顺便说一下,如果用户1选择了一张图片,它将创建test1.html?v=123的图像是image1.jpg。如果用户2选择,则创建test2.html?v=432,image2.jpg,这是每个HTML对于每个用户的唯一URL,因此我认为这不是缓存问题:D - imtns
啊,除非您使用“picture”参数手动添加预览,否则共享对话框不会显示预览。 - Niraj Shah

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