背景:
什么有效
什么行不通
我想知道fbs_ cookie中是否存在阻止会话登录后重新生成的内容。与安全子域相关的东西或者我们在开发站点上使用的端口号?
有很多人在Facebook会话中遇到过与我见过的类似问题,但我遇到的建议似乎并没有解决fbs_ cookie,域名,端口等的内容。我的理解这些事情与cookies有什么关系相对较轻,但我想至少将它们视为非问题,以便我可以在其他地方查看。
欣赏任何见解。
答案 0 :(得分:2)
我遇到了类似的问题,我开始使用类似以下的内容:
function get_facebook_cookie($app_id, $app_secret) {
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $app_secret) != $args['sig']) {
return null;
}
return $args;
}
$cookie = get_facebook_cookie(APP_ID, APP_SECRET);
$me = json_decode(file_get_contents('https://graph.facebook.com/me?access_token='.$cookie['access_token']));
if ($me) {
echo "Hi ".$me->name;
} else { ?>
<a href="https://www.facebook.com/dialog/oauth?client_id=<?= APP_ID;?>&redirect_uri=<?= REDIRECT_URI ;?>"><img src="http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif"><!--Login with Facebook--></a>
我还包括以下JS
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({appId: '<? echo APP_ID ?>', status: true,
cookie: true, xfbml: true});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
</script>
我正在使用像你自己这样的PHP SDK,但是我停止了它不起作用的面孔。我注意到这仍然会在与cookie相关的错误日志中引发一些错误,所以几乎看起来它依赖于JS首先初始化cookie。 SDK的第3版现已上市,所以可能会有所帮助。这之间的唯一区别是我必须在我想要的图形对象上手动调用file_get_contents但是它应该很容易编写一个函数或类来为你做这个
答案 1 :(得分:0)
这个问题随着新的Facebook PHP SDK(v3)而消失了