我有这段代码可以在同一页面 URL 上创建多个共享按钮,但指定了自定义标题、描述和图像。
// this loads the Facebook API
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) { return; }
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
window.fbAsyncInit = function () {
var appId = '1937011929814387';
FB.init({
appId: appId,
xfbml: true,
version: 'v2.9'
});
};
// FB Share with custom OG data.
(function($) {
$('.fb_share_btn').on('click', function (event) {
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
// Dynamically gather and set the FB share data.
var FBDesc = 'My custom description';
var FBTitle = 'My custom title';
var FBLink = 'http://example.com/my-page-link';
var FBPic = 'http://example.com/img/my-custom-image.jpg';
// Open FB share popup
FB.ui({
method: 'share_open_graph',
action_type: 'og.shares',
action_properties: JSON.stringify({
object: {
'og:url': FBLink,
'og:title': FBTitle,
'og:description': FBDesc,
'og:image': FBPic
}
})
},
function (response) {
// Action after response
})
})
})( jQuery );
对于图像,我遵循 FB dev docs 中描述的“分享最佳实践” .
但是当分享到 Facebook 时,而不是像这样以大尺寸显示图像:
它的缩小版是这样的:
我知道 Facebook JavaScript SDK 是 deprecating some parameters recently曾经使它像我期望的那样工作。这就是为什么我使用最新的 SDK 版本 (v2.9) 和可用于此自定义共享的方法的原因 share_open_graph
for share dialogs .
这是否意味着从 SDK v2.9+ 开始,我们不能再让共享磁贴显示更大的图像了?
最佳答案
2019 年更新 此解决方案不再有效。尚未找到新的解决方案。 :(
我找到了解决方案。只需将 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': FBLink,
'og:title': FBTitle,
'og:description': FBDesc,
'og:image': FBPic
}
})
},
function (response) {
// Action after response
}
);
...
完整文章查询:Dynamically change facebook open graph meta data javascript或者只是结帐 fully working example看看它的实际效果。
小的缺点是共享对话框顶部的句子“John Doe likes an object on drib”和用户墙上的共享内容。
关于javascript - 具有 share_open_graph 方法的 FB.ui 仅显示小图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45091741/