喜欢FB页面确认之后不会触发edge.create事件

问题描述 投票:6回答:4

以下代码以前有效但现在没有。由于FB在喜欢页面时添加了确认框,因此确认后不再触发edge.create。

    <div class="fb-page" data-href="{{ $fbPageUrl }}" data-tabs="timeline" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true"></div>
    <script>
        $(document).ready(function() {
            $.getScript('//connect.facebook.net/en_US/sdk.js', function(){
                FB.init({
                    appId      : 'xxxxxxxxxxxxxx',
                    xfbml      : true,
                    version    : 'v2.9'
                });

                FB.Event.subscribe('edge.create', function(response) {
                    alert('Fired!');
                });
            });
        });
    </script>
javascript jquery facebook-javascript-sdk
4个回答
2
投票

我怀疑这是新Facebook更新的错误。你可以在这里搜索问题https://developers.facebook.com/bugs,如果还没有报告,也可以发布一个新的bug


5
投票

您无法再订阅edge.create。在这个时候(04/2018),它仍然在documentation,但它已被弃用,并在不久的将来被完全删除。

根据设计,第三方应用程序无法知道何时单击Like button

您需要以不需要了解iframe中提供的Facebook Like按钮的方式设计您的应用程序。

引用此bug report

不推荐使用edge.create事件(https://developers.facebook.com/docs/plugins/faqs/),因此工程师决定不为此情况修复它,因为它将在未来的api版本中完全取出。

来自this one

我知道这对您很重要,但不幸的是,由于政策问题,我们故意进行了弃用。

开发人员不应再检查用户按下了什么。


2
投票

这些活动将无法再访问。作为替代方案,您可以使用我们的Webhooks,并在每次有人喜欢您的某个Facebook页面时收到通知。

This is the webhooks endpoint

Source


0
投票

到目前为止的工作方案

<!doctype html>
<html lang="en" xmlns:fb="https://www.facebook.com/2008/fbml">
<head>
    <meta charset="utf-8">
    <title>Facebook Like Button</title>
</head>
<body>
<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function () {
        FB.init({appId: '1906177386133148', status: true, cookie: true, xfbml: true});
        FB.Event.subscribe("edge.create", function (targetUrl) {
            console.log('edge.create');
        });
        FB.Event.subscribe("edge.remove", function (targetUrl) {
            console.log('edge.remove');
        });
    };
    (function () {
        var e = document.createElement('script');
        e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/es_ES/all.js';
        document.getElementById('fb-root').appendChild(e);
    }());
</script>
<fb:like></fb:like>
</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.