0

我对我的网站有了一个想法,因为我不知道从哪里开始寻找,所以我有了一些初步的方向。

我正在开发一个基于订阅的网站,用户可以在 facebook 上共享该网站并为每个共享计算积分。当他们达到一定数量的积分时,他们会收到订阅折扣。

该站点是一个 wordpress 多站点,用户在他们订阅的我的主站点上有自己的帐户区域 - 这是我想要记录他们的分数的地方(即不在 wordpress 管理仪表板上)。

有人可以为我指出正确的方向,了解我如何跟踪用户何时共享页面以及每次如何分配他们的积分。

4

1 回答 1

1

如果您需要用户标识符,即 user_id,您必须使用 Graph API,并且用户应首先验证您的应用程序以允许代表他们发布。

<script>

 window.fbAsyncInit = function() {
 FB.init({
    appId      : '{app-id}',
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    xfbml      : true  // parse XFBML
  });

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    share(response.authResponse.userID);
  } else if (response.status === 'not_authorized') {
    login();
  } else {
    login();
  }
 });

};

(function(d){
   var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
   if (d.getElementById(id)) {return;}
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = "//connect.facebook.net/en_US/all.js";
   ref.parentNode.insertBefore(js, ref);
  }(document));


  function login()
  {
    FB.login(function(response) {
      if (response.authResponse) {
         FB.api('/me', function(response) {
            share(response.id);
         });
       } else {
         console.log('User cancelled login or did not fully authorize.');
       }
     },{scope: "publish_stream"});
  }

  function share(id)
  {
     FB.api(
        "/me/feed",
        "POST",
        {
          "object": {
            "message": "This is a test message",
            "link": "{your-website-link}"
          }
        },
        function (response) {
          if (response && !response.error) {
            //make an ajax call and save the update the points wrt userId
          }
        } 
     );
 }
 </script>

<div id="fb-root"></div>

我想代码是不言自明的。

参考资料:FB.login, FB.getLoginStatus,/me/feed


如果您已有用户标识符,则无需使用 Graph API,而是可以使用Feed Dialog进行共享,无需用户验证您的应用即可完成。

<script>

window.fbAsyncInit = function() {
    FB.init({
       appId      : '{app-id}',
       status     : true, // check login status
       cookie     : true, // enable cookies to allow the server to access the session
       xfbml      : true  // parse XFBML
     });

   FB.ui({
       method: 'feed',
       link: "{your-website-link}"
   }, function(response){
       // share successful
       //ajax call here to save points
   });

};

(function(d){
  var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement('script'); js.id = id; js.async = true;
  js.src = "//connect.facebook.net/en_US/all.js";
  ref.parentNode.insertBefore(js, ref);
 }(document));
</script>
<div id="fb-root"></div>

由于您的问题很广泛,它在这里粘贴了相当多的代码。如果您对此有任何困难,请告诉我。

于 2014-04-11T19:27:23.070 回答