7

我目前正在写一个网站,我需要一些关于 facebook 集成的帮助。我需要一个函数(PHP 或 JS,两者都会有所帮助)来检查给定用户是否共享了我的网站,但我不知道如何编写。你能指出我正确的方向吗?

4

2 回答 2

7

首先,您必须在标签之后立即加载 Facebook SDK:

<div id="fb-root"></div>
  <script>
  window.fbAsyncInit = function() {
    FB.init({
      appId                : "YOUR APP ID",
      status               : true, // check login status
      cookie               : true, // enable cookies to allow the server to access the session
      xfbml                : false,  // parse XFBML
      perms                : 'read_stream',
      access_token         : "USER ACCESS TOkEN",
      frictionlessRequests : true
    });
  };

  // Load the SDK Asynchronously
  (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/pt_BR/all.js";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));

</script>

然后你可以使用回调函数来做你想做的事:

<script type="text/javascript">
    function shareOnFacebook() {
    FB.ui(
      {
        method        : 'feed',
        display       : 'iframe',
        name          : 'name',
        link          : 'http://www.linktoshare.com',
        picture       : 'http://www.linktoshare.com/images/imagethumbnail.png',
        caption       : 'txt caption',
        description   : 'txt description',
        access_token  : 'user access token'
      },
      function(response) {
        if (response && response.post_id) {

          // HERE YOU CAN DO WHAT YOU NEED
          alert('OK! User has published on Facebook.');

        } else {
          //alert('Post was not published.');
        }
      }
    );
  }
</script>

然后你应该像这样使用它:

<a href="#" onclick="shareOnFacebook();">Share on facebook</a>
于 2012-06-21T13:22:21.853 回答
5

使用JavaScript SDKFB.ui()feed对话框,您可以提示您的用户在 Facebook 上共享 URL。此对话框提供了一个回调函数,以便您判断帖子是否成功。
从上面的链接中提取的代码示例...

 var obj = {
    method: 'feed',
    link: 'https://developers.facebook.com/docs/reference/dialogs/',
    picture: 'http://fbrell.com/f8.jpg',
    name: 'Facebook Dialogs',
    caption: 'Reference Documentation',
    description: 'Using Dialogs to interact with users.'
};

function callback(response) {
    document.getElementById('msg').innerHTML = "Post ID: " + response['post_id'];
}

FB.ui(obj, callback);

这是完成您需要的最简单的方法。但是,它不允许您测试是否有人在您的feed对话之外共享了您网站的 URL。


read_stream可以通过使用权限来完成不需要对话回调的更复杂的替代方案。获得该权限后,您可以扫描用户过去的帖子,看看他是否曾经在他的墙上分享过您的网站...

请记住,如果用户在别人的墙上或页面上共享您的网站,这将不起作用...

于 2012-06-21T13:22:35.973 回答