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