如何检查用户是否共享网站(Facebook)?可能吗?

时间:2012-06-21 13:16:21

标签: facebook facebook-graph-api

我目前正在写一个网站,我需要一些关于facebook集成的帮助。 我需要一个函数(PHP或JS,都会有帮助),可以检查给定用户是否共享我的网站, 我无法找到如何写一个。 你能指点我正确的方向吗?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:5)

使用JavaScript SDK, FB.ui() and the feed dialog,,您可以提示您的用户在Facebook上分享网址。此对话框提供回调功能,以便您可以判断帖子是否成功 从上述链接解除的代码示例......

 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对话框之外共享了您网站的网址。


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

请注意,如果用户在其他人的墙上或页面上分享了您的网站,这将无效...