用PHP和jQuery验证Facebook

时间:2012-12-24 22:45:11

标签: php jquery facebook

我在使用以下代码进行身份验证时遇到了一些麻烦。

我有一个页面为用户生成loginUrl,以便在Facebook上登录/验证我的应用程序:

<?php
    $loginUrl = $facebook->getLoginUrl(array('scope' => 'publish_stream, read_friendlists, user_birthday', 'redirect_uri' => 'complete.php'));
?>
<div id="connect_facebook">
    <a class="button" href="<?php echo $loginUrl; ?>">Connect to Facebook</a>
</div>

我的complete.php有一个执行以下操作的脚本:

<script>
$(document).ready(function() {
    pop_db();
});

function pop_db() {
    $.post(
        "pop_db.php",
        function(data) {
            alert(data);
        }
    );
}
</script>

我的pop_db.php文件如下:

<?php
require_once('constants.php');

$response = array();

$user = $facebook->getUser();

if($user) {
    try {
        // make API calls
        $response['code'] = "success";
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
} else {
    $response['code'] = "failure";
    $response['userID'] = $facebook->getUser();
    $response['access_token'] = $facebook->getAccessToken();
}

echo json_encode($response);

&GT;

并且constants.php有我对Facebook对象的秘密信息(它还会创建$ facebook对象)。

我的问题是,当我使用“complete.php”作为重定向并尝试使用此jQuery执行API调用async时,我得到一个userID = 0的响应(意味着用户未登录) )但似乎我得到了一个有效的访问令牌。当我使用“pop_db.php”作为我的重定向而不是“complete.php”,因此不使用任何异步调用时,一切正常。

我错过了什么吗?为什么它一直告诉我用户没有登录?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

通过Facebook /整合facebook登录到他们的网站登录他们自己的网站有什么问题只需按照给定的链接“http://developers.facebook.com/docs/howtos/login/server-side-login/# step2“。这是一个非常好的链接,可以解决你的问题。

感谢。 banalata。