Поделиться результатами викторины на Facebook

Я потратил часы, исследуя это, но для многих разработчиков это кажется сложным. У меня небольшая опрос php, выводя результаты из формы следующим образом:

if (maxA) {
   echo '
   <img src="imgs/result4.jpg"/>
   <div class="results2">
   <p class="title">You are a Bean</p>
   <p class="details">Description</p>
   </div>';
}

Вопрос заключается в том, как добавить кнопку "Поделиться" в нижней части этой страницы, которая будет делиться результатами на Facebook вместе с описанием и рисунком. Обратите внимание, что есть четыре доступных результата.

Я сделал публичное приложение и вставил в голову следующее:

<script>
window.fbAsyncInit = function() {
FB.init({
  appId      : '1382290368762081',
  xfbml      : true,
  version    : 'v2.3'
});
};

(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'));
</script>

И HTML еще предстоит выяснить. Я пошел туда и обратно с этим ответом: Использование "share_open_graph" Facebook, чтобы создать динамический диалог для показа результатов викторины - но на самом деле ничего не добился. Я думаю, что это было бы полезно для всего сообщества, если кто-то знает, как именно это произойдет, и поделиться им с нами.

Ответ 1

Для этого вы можете использовать для этого facebook js SDK. вы можете вызвать фид метода FB.ui для этого. Создайте кнопку на своей странице

<input type="button" onclick="postToFeed()" value="Share" />

. Используйте нижеследующую функцию javscript для совместного использования на facebook.

function postToFeed() {
    // calling the API ...
    var obj = {
      method: 'feed',
      link: 'https://www.azeezkallayi.com/',
      description: "description goes here",
      picture: 'https://www.azeezkallayi.com/demo/test/womens-day.jpg',
      name: 'International womens day'       
    };
     FB.ui(obj);
   }

Здесь вы можете изменить значения параметров, как вы хотите.

Ответ 2

В дополнение к ответу @Azeez: несмотря на комментарий @CBroe, нет необходимости создавать четыре URL-адреса для каждого из разных результатов. Лучший способ справиться с этой ситуацией - поделиться Facebook с помощью диалога Feed (аналогично, но не так, как, диалог Share - Метод Share не может быть изменен и вместо этого извлекает информацию из метатег на странице).

Затем вы можете использовать Javascript SDK (с вашим идентификатором приложения), чтобы открыть новый диалог Фид, заполненный совершенно уникальными элементами. Например:

    // Facebook Share
    $('#facebook-share').on('click', function(e){
        e.preventDefault();

        FB.ui({
            method: 'feed',
            link: 'http://www.example.com/Quiz/',
            picture: '<?= $FacebookShareImage; ?>',
            name: 'This is a headline',
            caption: 'example.com',
            description: 'Your longer description goes here'

        }, function(response){
            if (response) {
                console.log('Facebook post published.');
                showThankYou();
            } else {
                console.log('Facebook post was not published.');
            }
        });
    }); 

Вы можете прочитать о остальных доступных атрибутах вышеупомянутую страницу документации по диалоговому окну.