Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 共享SVG到Facebook_Javascript_Facebook_Facebook Graph Api_Svg_Canvg - Fatal编程技术网

Javascript 共享SVG到Facebook

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(

用户自定义SVG,当他们满意时,我想让他们选择在Facebook上共享图像

我知道Facebook不接受SVG,所以,在阅读了这个问题后,我使用
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) {});