facebooks sharedSession返回“页面没有正确重定向”

时间:2013-02-26 23:41:56

标签: php facebook login

我正在尝试通过facebook登录激活cookie,所以它并不总是依赖于那里的会话,但每当我将sharedSession设置为true时,我得到一个“页面没有正确重定向”错误页面。这是我假设这样做的方式,所以facebook登录使用cookies?我正在使用github上的最新代码作为facebook SDK(今天下载了一个新鲜的) - > https://github.com/facebook/facebook-php-sdk

我没有使用javascript SDK。并且在发送任何标头之前触发下面的所有编码。如果我将sharedSession取出,它会正确登录,但它不会存储包含所需信息的cookie。

继承我正在使用的编码

$facebook = new Facebook(array(
    'appId'  => $Sets['facebook']['appId'],
    'secret' => $Sets['facebook']['appSecret'],
'sharedSession' => true,
//  'trustForwarded' => true
));
$user = $facebook->getUser();
if($user){
    try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        $user = null;
    }
}
// the user is logged into facebook
if($user){
    // I register them on my website..
    // and then send them to the index page
    header('Location: /index.php'); 
} else {
    // they are not registered through facebook
    if(isset($_GET['error'])){
            // this happens when an error is found
        die($_GET['error'].' error');
//      header("Location: /login/?error=".urlencode($_GET['error']));
        exit;
    } else {
            // send to facebook to log them in.
        $loginUrl = $facebook->getLoginUrl($Sets['facebook']['scope_array']);
//      die('sending to '.$loginUrl);
        header("Location: ".$loginUrl);
        exit;
    }
}

你可以看到我在任何重定向之前放置了die()函数,这是为了调试我的结果,看看我是否可以找出它失败的地方,但它似乎发生在用户返回之后网站..我也尝试过trustForward =>是的,但那并没有解决它..

所有我想要的是能够让用户登录更长的时间,而无需每次访问网站时都通过Facebook登录。

发生的事情是用户陷入了一个循环,试图登录到Facebook和我的网站之间的重定向,因为用户从未被验证过。同样,这只发生在我设置'sharedSession' => true

我正在尝试让facebook sdk将我的网站上的cookie存储到试图登录但没有设置cookie的个人计算机上。

2 个答案:

答案 0 :(得分:0)

我对你的问题感到困惑。你想达到什么目标:

1)如果你想将你的facebook user_id存储到cookie,你不需要做任何事情。当oauth进程完成时,facebook重定向到你的“redirect_uri”网址,这个cookie由facebook设置为一个cookie值:fbsr_xxxx(xxxx是你的appId)

2)如果您希望让用户长时间登录,则需要设置自己的会话值以确定用户是否已登录。换句话说,在facebook oauth流程之后,您的用户登录状态与您的Facebook会话无关。

BTW:$ Users-> loginWithOauth,这个函数没有定义,这个函数是什么用的?

答案 1 :(得分:0)

原因是没有授予所需的权限,所以最终它会去Facebook搜索令牌并返回。

检查您需要的权限。