我正在尝试通过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的个人计算机上。
答案 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搜索令牌并返回。
检查您需要的权限。