Javascript FB.ui共享设置标题、消息和图像

Javascript FB.ui共享设置标题、消息和图像,javascript,facebook,fb.ui,Javascript,Facebook,Fb.ui,我正在使用FB.ui将一个页面共享到Facebook,我正在尝试设置标题和消息(如果可能,则设置图像,但不重要)。我的站点标题中有这个 <meta property="og:title" content="Your title here" /> <meta property="og:description" content="your description here" /> 根据我所读的内容,我只需要og:titlean和og:description来设置标题和消息,

我正在使用FB.ui将一个页面共享到Facebook,我正在尝试设置标题和消息(如果可能,则设置图像,但不重要)。我的站点标题中有这个

<meta property="og:title" content="Your title here" />
<meta property="og:description" content="your description here" />
根据我所读的内容,我只需要og:titlean和og:description来设置标题和消息,但这似乎不起作用


当前标题要么来自部分标题,要么来自图像上的alt标记,而消息仅由随机段落标记填充。

元数据可能由Facebook缓存。尝试在Facebook调试器中输入您的url:

这将清除缓存

对于图像,请使用以下命令:

<meta property="og:image" content="http://yourimage">


Facebook文档说“share”方法只有href参数,但我发现它不是真的。您可以使用与“feed”方法非常相似的参数。这就是我所使用和使用的:

    FB.ui(
    {
        method: 'share',
        href: 'your_url',     // The same than link in feed method
        title: 'your_title',  // The same than name in feed method
        picture: 'path_to_your_picture',  
        caption: 'your_caption',  
        description: 'your_description',
     },
     function(response){
        // your code to manage the response
     });

我找到了这篇文章,并尝试实现上面提到的步骤。在浪费了几个小时之后,我看到了上面@SMT的评论

我在v2.10中肯定不再工作了

我的客户已经在等待此功能,因此我必须找到解决方法。 请注意:我为WordPress编写了这个解决方案,所以您可以更改几行,使其在您的站点上工作

让我们从我的HTML代码开始 包含图像和按钮的包装:

<div class="my-image-container">
    <img src="http://example.com/image.jpg">
    <a href="#" class="fb-share-image">Share</a>');
</div>
下一步是处理URL参数。这段代码是YOAST为WordPress和WordPress SEO编写的,但您可以简单地将其更改为与您的CMS一起使用。 将其添加到函数中。php

add_filter('wpseo_opengraph_image',function( $img ){
    if( array_key_exists( 'og_img', $_GET ) )
        return $_GET['og_img'];
    return $img;
});

add_filter('wpseo_opengraph_url',function( $url ){
    if( array_key_exists( 'og_img', $_GET ) )
        return $url . '?og_img=' . $_GET['og_img'];
    return $url;
});
一般的想法是为每个图像创建一个单独的URL,该URL只会更改OG参数,因此Facebook必须逐个删除每个图像。
为了避免任何SEO问题,你应该在你的标题中有一个指向原始URL的规范标签。下面是一个例子。

您正在使用的代码已被弃用。您可以使用以下命令 与动态覆盖的属性共享对话:

FB.ui({
  method: 'share_open_graph',
  action_type: 'og.shares',
  display: 'popup',
  action_properties: JSON.stringify({
    object: {
      'og:url': 'https://your-url-here.com',
      'og:title': 'Title to show',
      'og:description': 'The description',
      'og:image': 'https://path-to-image.png'
    }
  })
}, function(response) {
  // Action after response
});
有关详细的工作示例,请参阅签出:

如果你在Facebook上共享一个网页(带有og元标签),并在以后更新标题和描述等,它们不会在Facebook上立即更新,因为Facebook会缓存你的网页,并在2天后再次废弃该网页


因此,如果你想立即更新Facebook上的标题、描述等,你需要使用工具再次废弃该网页。

从2018年1月1日起,我可以使用
共享开放图
方法。这是可行的,但似乎很神奇,而且没有文档记录,所以请注意编码者

shareOnFB: function() {
    var img = "image.jpg";
    var desc = "your caption here";
    var title = 'your title here';
    var link = 'https://your.link.here/';

    // Open FB share popup
    FB.ui({
        method: 'share_open_graph',
        action_type: 'og.shares',
        action_properties: JSON.stringify({
            object: {
                'og:url': link,
                'og:title': title,
                'og:description': desc,
                'og:image': img
            }
        })
    },
    function (response) {
        // Action after response
    });

如果您有公共存储桶,但仍然无法与facebook共享您的图像,请检查您的后端s3存储桶图像上载代码

var data = {
    Bucket: bucketName,
    Key: fileName,
    Body: buf,
    ContentEncoding: 'base64',
    ContentType: 'image/jpeg',

};
s3Bucket.putObject(data, function(err, data){
    if (err) {
        console.log(err);
        console.log('Error uploading data: ', data);
        callback(err);
    } else {
        console.log('succesfully uploaded the image!');
        callback(null,"");
    }
});

从数据对象中删除
ContentType:'image/jpeg',

这应该写在文档中。谢谢。顺便说一句,从Graph API v2.9开始,此功能不再有效。它在Feed对话中也被弃用,并将于2017年7月17日正式消亡。谢谢facebook/这个过程很有帮助。那么,是否有任何解决方案可以使用javascript代码传递href、图片、标题和描述?是否有其他方法可以在facebook上共享提要,我使用的是v2.7,运行良好。但现在它突然停止在facebook上分享内容。需要帮助…我找到了一个解决方法,从20180101开始使用
share\u open\u graph
方法。请参阅下面的答案。看起来像是我一直在搜索的解决方法,因为自定义图像参数已失去其功能。但是,当我按照说明执行所有操作时,单击我的共享按钮将打开一个消息窗口,其中显示“无效的应用程序ID:0”。是不是我完全误解了这个解决方案?我试图在Wordpress生成的常规页面上实现它。不知道什么是Facebook应用程序等。你需要创建自己的Facebook应用程序,并在第3行插入你的应用程序ID。只需要几分钟:谢谢!完成所有这些,并调整您的脚本。仍然只能获取标准的共享窗口内容(与站点og相同)。你确定在同一页上不同的共享按钮可以获得不同的图像吗?我真的做到了!所以,你是我的英雄!这个答案应该链接到2017年7月以后的所有帖子,作为解决办法。伟大的这对我来说非常合适。非常感谢你救了我一天!:)这是完美的,直到几天前:(…参考:你能帮我在facebook上只分享描述吗?这个问题已经不起作用了。
shareOnFB: function() {
    var img = "image.jpg";
    var desc = "your caption here";
    var title = 'your title here';
    var link = 'https://your.link.here/';

    // Open FB share popup
    FB.ui({
        method: 'share_open_graph',
        action_type: 'og.shares',
        action_properties: JSON.stringify({
            object: {
                'og:url': link,
                'og:title': title,
                'og:description': desc,
                'og:image': img
            }
        })
    },
    function (response) {
        // Action after response
    });
var data = {
    Bucket: bucketName,
    Key: fileName,
    Body: buf,
    ContentEncoding: 'base64',
    ContentType: 'image/jpeg',

};
s3Bucket.putObject(data, function(err, data){
    if (err) {
        console.log(err);
        console.log('Error uploading data: ', data);
        callback(err);
    } else {
        console.log('succesfully uploaded the image!');
        callback(null,"");
    }
});