1

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

我有一个页面生成 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);

?>

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

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

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

任何建议都非常感谢。

4

1 回答 1

0

谁在通过 facebook 登录自己的网站/将 facebook 登录集成到他们的网站时遇到问题,只需按照给定的链接“http://developers.facebook.com/docs/howtos/login/server-side-login/#step2”。这是一个非常好的链接,可以肯定地解决您的问题。

谢谢。香蕉。

"

于 2012-12-26T16:54:57.753 回答