Php facebooks sharedSession returning“;页面不是';t正确重定向“;

Php facebooks sharedSession returning“;页面不是';t正确重定向“;,php,facebook,login,Php,Facebook,Login,我正试图通过facebook登录激活Cookie,因此它并不总是依赖于会话的存在,但每当我将sharedSession设置为true时,我就会收到一个“页面未正确重定向”错误页面。。这就是我想让facebook登录使用cookies的方式吗?我正在使用github上facebook SDK的最新代码(今天下载了一个freshy)-> 我没有使用javascript SDK。下面的所有编码都是在发送任何头之前触发的。如果我取出sharedSession,它会正确地让我登录,但它不会存储包含所需信息

我正试图通过facebook登录激活Cookie,因此它并不总是依赖于会话的存在,但每当我将
sharedSession
设置为true时,我就会收到一个“页面未正确重定向”错误页面。。这就是我想让facebook登录使用cookies的方式吗?我正在使用github上facebook SDK的最新代码(今天下载了一个freshy)->

我没有使用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的个人计算机上。

我被你的问题弄糊涂了。您希望实现什么目标:

1) 如果你想将你的facebook用户id设置为cookie,你不需要做任何事情。当oauth进程完成时,facebook将重定向到您的“重定向uri”url,facebook将cookie设置为cookie值:fbsr_xxxx(xxxx是您的appId)

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


顺便说一句:$Users->loginWithOauth,这个函数没有定义,这个函数是做什么的

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


检查您需要的权限。

我正在尝试1)设置facebook cookie。现在,在上面发布的代码的脚本中,当用户登录时,没有设置cookie。这是在github上使用facebook php sdk的最新版本。而
$Users->loginWithOauth
是我注册用户的脚本。您的oauth过程不是很清楚,您应该首先按照facebook服务器端身份验证流程获取代码;用户授权你的应用后,facebook将调用回调页面,即你发布的脚本;您可以在此步骤中运行任何登录逻辑。同样,facebook cookie(fbsr_xxxx)是由facebook设置的,而不是由您设置的。请参考文章,希望这对我更新最初的问题有所帮助。我正在使用facebook推荐的->工具。我遵循与示例登录页面->相同的做法登录用户。一旦用户在接受所有内容后通过facebook确认,该用户在我的网站上注册良好,但没有设置cookie。那时我发现我们应该在facebook类的config中使用
'sharedSession'=>true
,而那时我陷入了重定向循环