Подтвердить что ты не робот

Facebook и кнопка совместного доступа с обратным вызовом

У меня есть веб-страница, на которой я разместил кнопку Facebook и кнопку совместного доступа и соответствующие функции обратного вызова javascript также присутствуют.

Теперь проблема заключается в том, что обратный вызов javascript срабатывает только тогда, когда пользователь "любит" и не срабатывает при нажатии кнопки "share".

Как будто мне нужно присуждать пользователю каждый раз, когда он делится ссылкой. Принимая во внимание, что "нравится", пользователь может использовать ссылку только один раз (не считая в отличие от/повторного).

Я знаю, что кнопка Share устарела. Но facebook теперь предоставляет кнопку совместного доступа с подобной кнопкой. Источник: https://developers.facebook.com/docs/plugins/like-button/

Есть ли способ запустить этот метод обратного вызова из этой кнопки совместного доступа?

Здесь мой код:

Код в начале тега BODY в моем HTML: -

<div id="fb-root"></div>

<script>
    window.fbAsyncInit = function() {
    FB.init({
        appId: ' My App ID ',
        status: true,
        cookie: true,
        xfbml: true,
        oauth: true
    });
    FB.Event.subscribe('edge.create', function(response) {
        alert('You liked the URL: ' + response);

      });
};
(function(d) {
    var js, id = 'facebook-jssdk';
    if (d.getElementById(id)) {
        return;
    }
    js = d.createElement('script');
    js.id = id;
    js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    d.getElementsByTagName('head')[0].appendChild(js);
}(document));

        </script>

Код для отображения кнопок "Избранное" и "Поделиться": -

<div class="fb-like" data-href=" My URL " data-layout="button_count" data-action="like" data-show-faces="false" data-share="true"></div>
4b9b3361

Ответ 1

Вы не можете получить обратную связь с помощью этой кнопки. Вместо этого вы можете создать свою кнопку совместного доступа и вызвать Диалог каналов в своем клике -

FB.ui(
{
  method: 'feed',
  name: 'Facebook Dialogs',
  link: 'https://developers.facebook.com/docs/dialogs/',
  picture: 'http://fbrell.com/f8.jpg',
  caption: 'Reference Documentation',
  description: 'Dialogs provide a simple, consistent interface for applications to interface with users.'
},
function(response) {
  if (response && response.post_id) {
    alert('Post was published.');
  } else {
    alert('Post was not published.');
  }
}
);

Ответ 2

полный код здесь

$("#bodyarea").on('click', '.share_fb', function(event) {
    event.preventDefault();
    var that = $(this);
    var post = that.parents('article.post-area');

    $.ajaxSetup({ cache: true });
        $.getScript('//connect.facebook.net/en_US/sdk.js', function(){
        FB.init({
          appId: '822306031169238', //replace with your app ID
          version: 'v2.3'
        });
        FB.ui({
            method: 'share',
            title: 'TTitle Test',
            description: 'Test Description Goes here. Tahir Sada ',
            href: 'https://developers.facebook.com/docs/',
          },
          function(response) {
            if (response && !response.error_code) {
              alert('Posting completed.');
            } else {
              alert('Error while posting.');
            }
        });
  });
});

Измените свой идентификатор приложения на работу

Рабочий пример

Ответ 3

Альтернативный способ, который я сделал для тех, кто не хочет публиковать APP только для него, это:

   jQuery("#div_share").click(function() {

        var url = "http://www.facebook.com/sharer/sharer.php?u=YOUR_URL&title=YOUR_TITLE";

        var openDialog = function(uri, name, options, closeCallback) {
            var win = window.open(uri, name, options);
            var interval = window.setInterval(function() {
                try {
                    if (win == null || win.closed) {
                        window.clearInterval(interval);
                        closeCallback(win);
                    }
                }
                catch (e) {
                }
            }, 1000);
            return win;
        };

        openDialog(url,'Facebook','width=640,height=580', function(){
            jQuery("#div_share").hide();
            jQuery("#formulario").show();
        });
    });

Он откроет диалог javascript для совместного использования и узнает, когда пользователь его закроет. Это не гарантирует, что они действительно разделяют контент... но..:)

Ответ 4

<div class="fb-like" data-href="page_link" data-layout="button_count" data-onshare="page_like_or_unlike_callback" data-onlike="page_like_or_unlike_callback" data-action="like" data-size="large" data-show-faces="true" data-share="false"></div>

Просто добавьте data-onlike="function_name" и определите функцию в вашем javascript. Сделав это, ваша функция будет вызвана, как только человек ударит, как на вашем сайте. Для кнопки share он все еще находится в режиме разработки, я скоро вас обновит.