在Facebook上分享测验结果

时间:2015-04-01 11:16:56

标签: php facebook facebook-graph-api

我花了几个小时研究这个,但对于那里的许多开发者来说似乎很棘手。我有一个小的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尚未弄明白。我来回回答:Using "share_open_graph" Facebook UI to create dynamic share dialog for quiz results - 但实际上并没有实现任何目标。我认为如果有人知道实现这一目标的确切方法,那将对整个社区有所帮助,并与我们分享

2 个答案:

答案 0 :(得分:10)

您可以使用facebook js SDK。你可以调用FB.ui方法feed来实现这个目的。 在页面上创建一个按钮

<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);
   }

您可以在此处根据需要更改参数值。

答案 1 :(得分:-1)

继@ Azeez的回答:尽管@ CBroe的评论,没有必要为每个不同的结果创建四个URL。处理这种情况的最佳方法是使用Feed dialog进行Facebook共享(与“共享”对话框类似,但不一样 - 共享方法无法修改,而是从元标记中提取其信息)页)。

然后,您可以使用Javascript SDK(包含您的应用ID)打开一个新的 Feed 对话框,其中填充了完全唯一的项目。例如:

    // 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.');
            }
        });
    }); 

您可以阅读上述Feed dialog documentation page的其余可用属性。