我正在尝试通过 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 的个人计算机上。