1

我正在尝试通过 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 => true,但这并没有解决它..

我所追求的只是能够让用户登录更长的时间,而不必每次访问该网站时都通过 Facebook 登录。

发生的事情是用户被困在一个循环中,试图登录 facebook,在 facebook 和我的网站之间被重定向,因为用户从未经过验证。同样,这仅在我设置时发生'sharedSession' => true

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

4

2 回答 2

0

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

1) 如果您想将您的 facebook user_id 设置为 cookie,您无需执行任何操作。当 oauth 过程完成后,facebook 重定向到您的“redirect_uri”url,cookie 由 facebook 设置为 cookie 值:fbsr_xxxx(xxxx 是您的 appId)

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

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

于 2013-03-11T14:48:23.580 回答
0

原因是未授予所需的权限,因此最终它会去 facebook 搜索令牌并返回。

检查您需要的权限。

于 2014-05-17T09:21:01.097 回答