当用户共享指向facebook的链接时更新数据库

时间:2011-12-27 01:27:42

标签: php facebook facebook-graph-api

一旦用户在我的网站上共享链接,是否可以更新数据库?

例如,如果他们共享链接,则会向他们的帐户授予一些积分。

我怎样才能确保他们真正分享到Facebook的链接,而不只是点击分享然后关闭弹出窗口......

我对facebook不熟悉,刚刚尝试谷歌但仍未找到答案......

谢谢。

编辑:

   <script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" 
    type="text/javascript">
   </script>

   <a name="fb_share" type="button" share_url="script2.php?id=XXX"> 

4 个答案:

答案 0 :(得分:6)

我猜你正在寻找这个http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/ 您需要订阅此活动。

答案 1 :(得分:6)

更新(2013年8月21日):自最初发布以来,Facebook的api已发生变化。跟踪喜欢的方式仍然相同(阅读下面的原始答案),但共享按钮的状态已更改。

弃用消息/信息。在文档中的任何位置都不再显示,但可以在this bug中看到。根据{{​​3}},分享按钮似乎仍然可用。但Facebook没有直接跟踪分享的方式。我也不知道跟踪股票的任何黑客行为。


原始回答:

来自this doc的Facebook文档。

  

不推荐使用“赞”按钮,而不再支持“共享”按钮。   请尽可能使用“赞”按钮来增加应用的流量。

所以我会告诉你如何为类似按钮做这件事:

首先使用this link

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'YOUR_APP_ID', // App ID
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });

    // Additional initialization code here
    // you can subscribe to events here
    // edge.create event is fired only when the user likes (which means that the wall post has already happened, when the like button was clicked) 
    FB.Event.subscribe('edge.create',
   function(response) {
    alert('You liked the URL: ' + response);
            // you can do some ajax call to your backend and update your database
   }
); 
  };

  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     d.getElementsByTagName('head')[0].appendChild(js);
   }(document));
  </script>

页面中的某个位置包含类似按钮

<fb:like href="http://example.com/fblike/" 
     send="true" width="450" show_faces="false"
     >
</fb:like>

您也可以更改“赞”按钮中显示的单词,从建议开始,您应该尝试自动生成此Javascript sdk中的类似按钮代码。

答案 2 :(得分:3)

是的,这是可能的。

示例链接:

<a href="?share=YOUR+URL">SHARE TO FACEBOOK</a>

散文的示例代码

if(isset($_GET['share']))
{
    if(mysql_query("insert into table X() value()"))
    {
        //open window, you can use header('location:..') or meta redirect or another way, in this sample i'm using javascript window.open;
        echo '<script>window.open("http://www.facebook.com/sharer.php?u='.urlencode($_GET['share']).'","share","width=600,height=400");</script>';
    }
}

要实现Facebook“赞”按钮,this link可能可以帮助您

答案 3 :(得分:1)

您不需要Facebook,当有人点击页面上的“赞”按钮时,您可以执行Javascript AJAX调用。该调用将写入您的数据库。只需将点击事件添加到按钮即可。