javascript - 具有 share_open_graph 方法的 FB.ui 仅显示小图像

标签 javascript facebook facebook-graph-api

我有这段代码可以在同一页面 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 时,而不是像这样以大尺寸显示图像:

enter image description here

它的缩小版是这样的:

enter image description here

我知道 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/

相关文章:

javascript - 哪个 Express.js 模板按原样使用 HTML?

php - Facebook 第二次验证用户身份

android - 在外部应用程序(facebook、twitter 或浏览器)中打开来自 Cordova 应用程序的链接,适用于 iOS 和 Android

scala - [喷客户端] : Facebook graph API returning wrong contentype

android - 如何链接到特定 Facebook 新闻源帖子的页面(在应用程序或浏览器中)?

javascript - 我想使用 setInterval() 每 1 秒更新一次输出列表,但它会得到无限循环输出

javascript - 关于使用 fetch() 和 .then() 构建 react 状态的问题

Facebook AR Studio - 导入动画

facebook-graph-api - 如何获取Facebook用户的语言?

javascript - 使用 Javascript/jQuery 裁剪图像