【发布时间】:2017-05-31 19:35:19
【问题描述】:
用户自定义 SVG,当他们满意时,我想给他们在 Facebook 上分享图像的选项。
我知道 Facebook 不接受 SVG,所以,在阅读了this 的问题后,我使用canvg 提出了以下建议:
var svgText = "<svg>" + $("#canvas2").html() + "</svg>";
canvg(document.getElementById('drawingCanvas'), svgText);
var img = document.getElementById('drawingCanvas').toDataURL("image/png");
尽管命名为.toDataURL,但img 并不是一个URL(至少我不这么认为),而是一个与data:image/png;base64,... 存在的>10,000 个字符的字符串。
如果我随后尝试允许用户在 Facebook 上分享 PNG,
window.FB.ui({
href: "https://dna.land",
method: 'feed',
name: 'name',
link: "dna.land",
picture: img,
caption: 'mywebsite.com',
description: "description",
message: "message"
}, function(response) {});
我得到的错误消息是“参数href”是必需的(我清楚地提供了......也许img太长并且JSON被截断了?),虽然我也看到了我' m 没有为 picture 提供有效的 URL。
如何在 Facebook 上分享图像数据?
如果无法使用 PNG 的原始 base 64 编码来执行此操作,我不反对将 PNG 文件临时存储在服务器上。但是,理想情况下,我只会存储 24 小时、几个月或一小段时间,然后能够在用户帖子消失的情况下将其删除。这可能吗?
【问题讨论】:
-
仅供参考:Facebook 正在取消为链接帖子动态设置标题、描述、标题和缩略图的可能性,developers.facebook.com/docs/apps/… 所有这些信息将取自共享 URL 的 Open Graph 元标记不久的将来。
标签: javascript facebook facebook-graph-api svg canvg