【问题标题】:With 'picture' in Facebook's Feed Dialog deprecated how can I post an image link?不推荐使用 Facebook 的 Feed 对话框中的“图片”,如何发布图片链接?
【发布时间】:2018-03-08 06:24:17
【问题描述】:

我一直在使用 Facebook 的 Feed Dialog 让网站上的用户在他们的 Facebook Feed 上分享内容。在他们的提要上,会有一张图片作为我网站上页面的链接,下面有一些文字(名称、标题和描述字段)。所有这些 - 图片、名称、标题和描述现已弃用,并于 7 月 17 日停止工作。有没有其他方法可以使用不同的方法来实现此功能?

【问题讨论】:

  • 谢谢CBroe。我现在明白我的帖子可能不够具体。我希望用户能够共享指向页面的链接,但不能共享页面本身。我之前这样做是让他们单击另一个页面上的链接,该链接触发了使用提要对话框的 javascript 代码。当然,他们第一次这样做时需要批准我的 Facebook 应用程序。现在还有没有办法在没有提要对话框的情况下做到这一点?
  • 你在哪里触发分享 from 与此有什么关系? “当然,他们第一次这样做时需要批准我的 Facebook 应用” - 不知道你在说什么;使用对话框不需要任何人的任何批准,用户完全可以控制。
  • 所以基本问题是,在共享不属于您的内容时,如何操作标题/描述/缩略图?好吧,您不能再这样做了,这就是弃用的全部要点

标签: facebook facebook-graph-api facebook-javascript-sdk


【解决方案1】:

目前(2019 年 12 月)您必须使用 URL 中设置的 OG 标签进行分享,因此根据 url 动态更新页面中的 OG 标签...我建议您页面上的每个对象都有一个 url基于传入的参数。请参阅此 FB 错误以获取解释 https://developers.facebook.com/support/bugs/1783400898620381/

【讨论】:

    【解决方案2】:

    您需要使用本页底部here in the FB dev docs 中描述的 Open Graph 操作方法。

    使用 FB.ui 函数和 share_open_graph 方法参数,用于分享 Open Graph 故事。

    尝试在您的代码中指定自定义图像、标题、描述或您的 FB 分享的链接:

        // 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.stopImmediatePropagation();
    
                    // Dynamically gather and set the FB share data. 
                    var FBDesc      = 'Your custom description';
                    var FBTitle     = 'Your custom title';
                    var FBLink      = 'http://example.com/your-page-link';
                    var FBPic       = 'http://example.com/img/your-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 );
    

    【讨论】:

    • 你是个天才,在任何地方都找不到这个,几乎放弃了在共享弹出窗口中添加自定义内容!
    • 当您调用event.stopImmediatePropagation() 时,您不再需要event.stopPropagation(),因为stopImmediatePropagation 也会这样做,唯一的区别是它会停止包含目标的传播。
    • 如果我们使用 mobile_iframe: true 会怎样?设置 mobile-iframe: true 时它不起作用。
    • 2018 回答:这些方法在当前 api 中已被弃用(这就是为什么它们没有在其文档中的任何地方列出的原因)。效果是图像大小似乎不一致,并且在某些时候它可能根本无法工作。 FB自己确认:developers.facebook.com/bugs/1783400898620381
    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 2012-10-08
    • 2018-01-05
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多