向新的Facebook分享对话框或自定义故事添加自定义名称、标题、图像和描述,而不是从og meta中获取它们。

13

我只是在编写一个测验脚本。因此,我想分享测验的结果而不是og元数据。

我知道可以使用旧的FB.ui feed action添加自定义名称、标题、描述和消息,而不是共享URL。例如:

    FB.ui({
    method: 'feed',
    href: url,
    name: name,
    caption: title,
    description: des,
    message: message,
    picture: img,
}, function(response){});

然而我认为这很快就会过时了?!

使用新的分享API是否也可能实现这一点?或者我可以使用自定义故事来实现吗?如何操作?我正在寻找类似于

    FB.ui({
    method: 'share',
    href: url,
    name: name,
    caption: title,
    description: des,
    message: message,
    picture: img,
}, function(response){});

但这不起作用:/ 它只获取href。其他所有内容都被忽略,无法预填:(

是否有任何最佳实践或Facebook推荐的方法来做到这一点?

API文档:https://developers.facebook.com/docs/sharing/reference/share-dialog

谢谢。我非常感谢您的帮助。


很好的问题。我仍在努力解决这个问题。(顺便说一下:即使是反馈API现在也对我不起作用,但那可能是我的问题。) - dimitarvp
Manuel,你能把“分享”改成“动态”,看看会发生什么并回报吗? - Pavan Katepalli
你为什么说它很快就会被弃用? - Chris
5个回答

10

2019年更新。 这种方法已经不再有效。目前还没有找到新的解决方案。:(

2018年6月27日更新。 代码的旧版本无法正常工作。共享的图像显示为左侧的小图像,而不是作为大型全列图像显示。修复方法是将 action_type: 'og.shares' 替换为 action_type: 'og.likes'

使用此代码:

    FB.ui({
    method: 'share_open_graph',
    action_type: 'og.likes',
    action_properties: JSON.stringify({
        object: {
            'og:url': url,
            'og:title': title,
            'og:description': des,
            'og:image': img
        }
    })
},
function (response) {
// Action after response
});
这适用于API版本2.9+。请注意,不再建议使用og.shares action_type,因为它没有在FB文档中提到,并且无法正确显示大图片。我现在使用og.likes。小缺点是在共享对话框和用户墙上分享的内容顶部会显示类似于“John Doe likes the object on drib”的句子。

有完整的工作示例,请查看JavaScript动态更改Facebook开放图谱元数据


正常工作,只有一个问题,它说:“Deepak Mahakale 在博客上分享了一个对象。” - Deepak Mahakale
@DeepakMahakale 感谢您的反馈,不幸的是我还没有找到解决方法。我怀疑现在可能还无法解决,但由于这个功能没有很好的文档记录,所以我们不能百分之百确定。 - DamirR
是的,如果你找到什么东西,请分享。因为我不得不使用元标签来处理这个“对象”问题。 - Deepak Mahakale
另外,如果有人提出任何问题,请告诉我。我可以为此发起悬赏。 - Deepak Mahakale
1
链接到的网站现在显示:“更新于2019年4月30日。此方法不再有效。如果我发现如何动态覆盖og元数据,解决方案将在此发布。” - Brandon
显示剩余4条评论

5

我不知道分享对话框的这些参数在哪里有文档记录,但我猜测了一下,这些都可以使用。提示一下,将您在Feed方法中使用的“name”参数更改为“title”。我正在从单个网页上的多个分享按钮上进行自定义分享。显然,用您自己的变量或字符串替换所有“custom...”变量:

FB.ui({
        method: 'share',
        href: 'http://yourwebpage.com',
        picture: customImage,
        title: customTitle,
        description: customDescription,
        caption: customCaption

    }, function(response) {});

1
我在“Feed对话框”中找到了这些内容:https://developers.facebook.com/docs/sharing/reference/feed-dialog/v2.4 - Chris
1
是的,Feed对话框参数在那里有很好的文档记录...但问题是针对“分享”对话框的参数 - 在描述问题中涉及到的单个页面上的多个个体分享 - 似乎没有被记录。我上面的示例适用于单个分享的共享对话框。 - spacewindow
现在它已经被弃用了 https://developers.facebook.com/docs/sharing/reference/feed-dialog#deprecated-params - Deepak Mahakale

0

我实际上不得不为每个可能的答案创建一个页面,并为每个答案添加了不同的og metas,但你可以使用一些URL解释器(如code igniter)来生成URL和其内容,然后只需创建一个函数来动态插入元标签。这类似于RESP Web服务API,其中URL实际上不是指向服务器的位置,而是对函数及其参数的调用。


0

其实这对我来说是有效的

            FB.ui({
                method: 'share',
                href: urlHost+link,
                // method: 'feed',
                title: name,
                link: urlHost+link,
                picture: urlHost+"/assets/images/fb.jpg",
                caption: "Interbank",
                description:description  

3
请注意 - 自从Graph v2.9版本起,自定义图片、标题和描述的这些额外字段已经被弃用并且不再起作用。 - Stephen Tetreault
2
如果您正在使用Graph v2.8,它将在2017年7月17日之前正常工作,之后将不再起作用。 - Stephen Tetreault

-4

我认为你的 href URL 应该使用元数据,这样 Facebook 就可以获取这些信息。

来自 Facebook 开发者页面:

在此 URL 上的页面上包括 open graph meta tags,以自定义与 Facebook 分享的故事。


3
无法使用开放图谱元标记,因为我想分享单个用户的测验结果。正在寻找FB API 2.0的解决方案。 - Manuel
1
我不是FB API的专家,但据我理解,您仍然可以在动态页面中使用元标签。我的意思是,您的URL将具有“测验结果ID”,以便您的标签可以动态加载。 - lsilvs
没有一个url是相同的。测验完全在客户端基于js上进行。 - Manuel
你解决这个问题了吗?Facebook让我为此烦恼不已,废弃自定义分享选项真是荒谬。 - sveti petar
3
你的回答根本没有回答问题。Manuel描述的问题正是你所给出的解决方案。href链接的OG标签被用于分享,他不想要那个。我给你的答案投了反对票。 - Pavan Katepalli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接