gpt4 book ai didi

php - Facebook PHP SDK getSession() 获取 session 失败。 cookies 问题?

转载 作者:搜寻专家 更新时间:2023-10-31 21:17:04 24 4
gpt4 key购买 nike

背景:

  • 使用 Facebook PHP SDK v 2.1.2
  • cookieSupport = true
  • Facebook 上的应用已启用适用于 Canvas 的 OAuth 2.0
  • Facebook 连接/登录逻辑发生在单独子域 (secure.mysite.com) 上的 https 上
  • 开发站点是 dev.mysite.com:PORT_NUM

什么有效

  • 我可以使用 Facebook Connect 成功登录
  • 通过 Facebook 对话框授权后,我们让用户登录,然后重定向到 fbconnect.php,它实例化 Facebook 类并调用 $facebook->getSession()
  • 这将返回一个有效的 Facebook session ,我们继续我们的登录后逻辑
  • 然后我们重定向到已登录的主页

什么不起作用

  • 之后的任何时候,$facebook->getSession() 都会返回 NULL。无论如何。
  • 根据文档,只要 cookie 有效,Facebook 就应该根据 cookie 重新生成有效 session 。持续时间默认设置为 1 小时,但即使在设置 cookie 后 30 秒内进行的调用也会失败。

我想知道 fbs_ cookie 中是否有什么东西阻止了登录后 session 的重新生成。与安全子域或可能与我们在开发站点上使用的端口号有关的东西?

据我所知,有很多人在使用 Facebook session 时遇到类似问题,但我遇到的建议似乎并未解决 fbs_ cookie、域、端口等内容。我的理解关于此类事情与 cookie 的关系的了解相对较少,但我想至少将它们作为非问题进行检查,以便我可以查看其他地方。

感谢任何见解。

最佳答案

我和你有类似的问题,我开始使用类似于以下的东西:

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,但是编写一个函数或类来为您执行此操作应该很容易

关于php - Facebook PHP SDK getSession() 获取 session 失败。 cookies 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6272099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com