在FB

时间:2018-05-15 06:50:00

标签: facebook-javascript-sdk html2canvas share-open-graph

这个我现在已经敲了几个星期。

情景:

  1. 让用户从他们选择的图层中生成图像
  2. 将图片转换为画布
  3. 使用 share_open_graph 分享来自Facebook墙上画布的图片(连同图片,将分享短文和标题)
  4. 我已经使用 publish_actions 制定了解决方案,但最近已从API中移除了该解决方案,但已不再可用。

    我正在使用js和html进行所有代码处理。

    问题是我可以从画布生成一个png图像但是保存为base64而 share_open_graph 不允许这种类型的图像,它需要一个直接的URL,如' ./ example.png&#39 ;.我尝试过使用几种方法和canvas2image,使用文件系统转换和保存图像,但所有这些都失败了。

    有没有人在2018年4月/ 5月使用 share_open_graph 获得类似的情景和可能的解决方案?

    我当前的代码看起来像这样 - 它在图像转换时失败并保存到文件中(Uncaught(在promise中)TypeError:r.existsSync不是n处的函数(file-system.js:30))。但我对不同的解决方案持开放态度,因为这显然不起作用。

    html2canvas(original, { width: 1200, height: 628 
    }).then(function(canvas) 
    {
    fb_image(canvas);
    });
    var fb_image = function(canvas) {
    canvas.setAttribute('id', 'canvas-to-share');
    document.getElementById('img-to-share').append(canvas);
    fbGenerate.style.display = 'none';
    fbPost.style.display = 'block';
    var canvas = document.getElementById('canvas-to-share');
    var data = canvas.toDataURL('image/png');
    
    var encodedPng = data.substring(data.indexOf(',') + 1, data.length);
    var decodedPng = base64.decode(encodedPng);
    
    const buffer = new Buffer(data.split(/,\s*/)[1], 'base64');
    pngToJpeg({ quality: 90 })(buffer).then(output => 
    fs.writeFile('./image-to-fb.jpeg', output));
    
    var infoText_content = document.createTextNode('Your image is being 
    posted to facebook...');
    infoText.appendChild(infoText_content);
    
    // Posting png from imageToShare to facebook
    
    fbPost.addEventListener('click', function(eve) {
      FB.ui(
        {
          method: 'share_open_graph',
          action_type: 'og.shares',
          href: 'https:example.com',
          action_properties: JSON.stringify({
            object: {
              'og:url': 'https://example.com',
              'og:title': 'My shared image',
              'og:description': 'Hey I am sharing on fb!',
         'og:image': './image-to-fb.jpeg',
         },
        }),
       },
       function(response) {
        console.log(response);
       }
      );
     });
    };
    

0 个答案:

没有答案