Facebook“喜欢”按钮回调帮助

时间:2011-06-03 16:43:08

标签: php ajax facebook facebook-like

我在facebook上使用此代码就像回调:

           <script type="text/javascript">
                FB.Event.subscribe('edge.create', function(response) {
                  // php script to call via ajax
                });
           </script>

问题在于,如果我调用一个php脚本(例如http://www.test.com/addfacebook?id=xx&user=xxx&code=xxxx),有人可以看到我的javascript并运行此页面甚至是垃圾邮件或使用它而不必先使用它。

这个概念是我想给每个喜欢页面的用户提供一个独特的特殊折扣代码。所以在回调中我想存储在数据库和id中,来自facebook的用户真实姓名以及我为他创建的折扣代码。

怎么做才能有人不能覆盖它(因为它是javascript)?

非常感谢!

2 个答案:

答案 0 :(得分:0)

了解您正在做的事情的最简单方法是验证用户是否合法。我希望你的ajax动作有参数,包括FacebookID和access_token。这将阻止任何人游戏你的系统。

由于您使用的是FB JS SDK - 只需调用API,如下所示:

FB.getLoginStatus(function (loginResponse) {
            FB.api('/me', function (graph) {
                var token = loginResponse.session.access_token;
                var fbid = loginResponse.session.uid;
        } else {
            // no user session available, someone you dont know
        }
    });

我将它放在你的FB.Event.subscribe中并相应地使用令牌和fbid变种。

希望这有帮助!

答案 1 :(得分:0)

您可以使用PHP SDK来验证Joey提到的令牌,一旦您在服务器上拥有令牌,就会使用以下内容:

$facebook = new Facebook(); // Replace the line with the call that sets the app id and secret
$user = $facebook->api('/me',array('access_token',$_GET['access_token']));

然后检查$ user

中的值