0

我在我的网站上运行一个特殊的 facebook 登录,当用户点击它时,必须发生以下情况:

  • 连接FB
  • 如果 facebook ID 已在用户数据库中识别,请执行 XXX
  • 如果 facebook ID 无法识别,请执行 YYY

出于某种原因,我无法获得检查 facebook ID 以正常工作的 ajax 查询。我已经在这上面花了几个小时,但仍然没有运气(开始感觉像是一个真正的timesink)......即使我将查询设置为只返回0(例如,将第二个回声也更改为'echo 0') ,它没有(除非我将整个函数剥离到字面上只是'echo 0')。关于为什么会发生这种情况的任何想法?下面的代码:

函数中调用的 ajax 查询(输入 var fbid):

<?php
    // configuration
    require("../html/includes/config.php"); 

    // connect to server
    $connect = mysql_connect(SERVER, USERNAME, PASSWORD);

    $fbid = $_POST["fbid"];

    $fbidcheck = query('SELECT * FROM usertable WHERE fbid = ?', $_POST["fbid"]);
    if (isset($fbidcheck[0]["fbid"]))
        echo 0;
    else
        echo 1;
?>

当有人点击登录按钮时调用的 JS 函数:

// FB login function
function fblogin() {
    FB.login(function(response) {
        if (response.authResponse) {

            // Here, I want to test if the facebook ID is already in the table

            var fbid = response.authResponse.userID;
            $.post("check_fbid.php", {'fbid': fbid}, function(result)
            {    
               if(result == 0)
               {
                    // login in the user
                    // use fbid to call session, etc. for login
                    location.reload();
                    return true;
               }
               else
               {
                    // open new box on page to let user register
                    openRegisterBox();
                    return false;
               }
           });
        } else {
            // Login was cancelled or failed
            return false;
        }
    }, {scope: 'email'});
}

同样,我已经将问题归结为 ajax 查询没有正常运行(我什至尝试重新创建它几次)。任何帮助将不胜感激。

谢谢

4

1 回答 1

0

我用你的代码实现了它,它工作得很好。
这是 PHP 代码的所有期望:

 <html>
    <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script type="text/javascript">
            function fblogin() {
                FB.login(function(response) {
                    if (response.authResponse) {
                        var fbid = response.authResponse.userID;
                        $.post("http://johnhiott.com/play/fbid.php", {'fbid': fbid}, function(result){    
                            if(result == 0){
                                alert("in");
                                return true;
                            }else{
                                alert("no");
                                return false;
                            }
                        });
                    }else {
                        return false;
                    }
                }, {scope: 'email'});
            }
        </script>
    </head>

    <body>
    <div id="fb-root"></div>
    <script>
      // Additional JS functions here
      window.fbAsyncInit = function() {
        FB.init({
          appId      : '284563394889810', // App ID
          channelUrl : '//WWW.JOHNHIOTT.COM/play/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 init code here

      };

      // Load the SDK Asynchronously
      (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>


    </body>

    <a href="#" onClick="fblogin()">hi</a>
    </script>
    </html>
于 2013-04-10T00:37:26.603 回答