Javascript 共享SVG到Facebook
用户自定义SVG,当他们满意时,我想让他们选择在Facebook上共享图像 我知道Facebook不接受SVG,所以,在阅读了这个问题后,我使用Javascript 共享SVG到Facebook,javascript,facebook,facebook-graph-api,svg,canvg,Javascript,Facebook,Facebook Graph Api,Svg,Canvg,用户自定义SVG,当他们满意时,我想让他们选择在Facebook上共享图像 我知道Facebook不接受SVG,所以,在阅读了这个问题后,我使用canvg,提出了以下建议: var svgText = "<svg>" + $("#canvas2").html() + "</svg>"; canvg(document.getElementById('drawingCanvas'), svgText); var img = document.getElementById(
canvg
,提出了以下建议:
var svgText = "<svg>" + $("#canvas2").html() + "</svg>";
canvg(document.getElementById('drawingCanvas'), svgText);
var img = document.getElementById('drawingCanvas').toDataURL("image/png");
我得到的错误消息是“parameter href”是必需的(我很清楚地提供了它……可能是img
太长,JSON被截断了?),尽管我也看到我没有为图片
提供有效的URL
如何在Facebook上共享图像数据
如果PNG的原始、基本64编码无法做到这一点,我并不反对将PNG文件临时存储在服务器上。但是,理想情况下,我只会存储24小时、几个月或一些小的时间跨度,然后能够删除它而不会让用户的帖子消失。可能吗
尽管命名为.toDataURL,但img并不是一个URL(至少,我认为不是),而是一个包含数据的>10000个字符串:image/png;base64
这就是确切的意思!函数名toDataURL()
没有误导性
在您的情况下,您需要做的是将Base64编码的图像(由数据URI表示)转换成一个文件并上传到某个地方(可能在您自己的服务器或任何云存储提供商(如Amazon S3或Google Cloud Storage)上),然后在Facebook上共享该url
在您自己的服务器上:如果要将其上载到自己的服务器,那么只需通过ajax发布数据URL,将其转换为图像并返回该图像的URL即可。要转换Base64映像,您需要寻找如何使用后端语言/系统进行转换的具体方法。例如,将Base64编码的图像转换为中的文件
- PHP:看看
- 蟒蛇:看
- NodeJS:看
如果要将图像上载到任何第三方服务,可以使用函数从画布获取对象,并将生成的blob上载到提供者(可能通过使用他们提供的Javascript/restapi)。顺便说一句,许多流行的云存储提供商都允许您上传具有适当MIME类型的blob,不过您应该始终检查是否支持。FYI:Facebook正在取消动态设置链接帖子标题、描述、标题和缩略图的功能,所有这些信息都将在不久的将来从共享URL的开放图元标记中获取。
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) {});