Facebook PHP SDK getSession() 无法获取会话.饼干问题?

2022-01-08 00:00:00 session cookies sdk php facebook

背景:

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

什么有效

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

什么不起作用

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

我想知道 fbs_ cookie 中是否存在阻止登录后会话重新生成的内容.与安全子域或我们在开发站点上使用的端口号相关的内容?

I'm wondering if there's something in the fbs_ cookie that's preventing the regeneration of a session post sign-in. Something related to the secure subdomain or possibly the port numbers we use on our dev sites?

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

There are a lot of people having similar problems with Facebook sessions from what I've seen, but the suggestions I've come across don't seem to address the content of the fbs_ cookie, domains, ports etc. My understanding of how such things relate to cookies is relatively light, but I'd like to at least check them off as non-issues so I can look elsewhere.

欣赏任何见解.

推荐答案

新的 Facebook PHP SDK (v3) 解决了这个问题

This issue went away with the new Facebook PHP SDK (v3)

相关文章