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

Sag*_*tan 6 facebook facebook-graph-api

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

Ped*_*ado 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>
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

<a href="#" onclick="shareOnFacebook();">Share on facebook</a>
Run Code Online (Sandbox Code Playgroud)

  • 你必须小心这一点,记住它是在客户端运行的,用户可以执行一个功能或他已经共享的东西,而他真的不这样做。 (2认同)

Lix*_*Lix 5

使用JavaScript SDK FB.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);
Run Code Online (Sandbox Code Playgroud)

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


可以通过利用read_stream许可来实现不需要对话回调的更复杂的替代方案.获得该许可后,您可以扫描用户过去的帖子,看看他是否在他的墙上分享过您的网站...

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