如果禁用第三方cookie,Facebook JavaScript / PHP SDK可以相互“交谈”吗?faceboo


can facebook javascript/php SDK's "talk" to each other if 3rd-party cookies are disabled? facebook->getUser() returns 0

我正在构建一个带有facebook javascript&php SDK一起工作的网站... 它通常运行良好,但是 - 我发现对于一台使用 chrome 的测试机器,当我从客户端/javascript 端执行 FB 登录时,后端的 PHP sdk 无法识别它 - facebook::getUser() 函数返回 0

经过大量的挠头和谷歌搜索无济于事,我通过 chrome 开发工具意识到/注意到,对于正在运行的机器,我看到名为"PHPSESSID"的 cookie 以及包含我的 facebook uid 和其他名称/值对的"C_user";而在非工作机器上,我只看到"PHPSESSID"。然后我发现/意识到非工作机器上的 chrome 禁用了第 3 方 cookie。

所以这显然是问题所在。 我已经做了更多的谷歌搜索,但我找不到一个明确的答案,是否有解决方法或更好的方法。

如果用户/浏览器禁用第 3 方 cookie,是否根本无法集成 js+php sdk? 我的PHP后端代码如何确定我正在处理哪个Facebook用户?

我通过使用

php-SDK getLoginUrl()在页面上提供一个登录链接并让用户使用它来解决这个问题,而不是对javascript login()函数进行客户端调用或使用facebook social/login插件。它可能会在某些时候遇到缺点,但就目前而言,这似乎适用于禁用了 3rd 方 cookie 的机器

从javascript中,登录后,您可以编写自己的第一方cookie,其中包含登录用户的用户ID。 如果需要,还可以包含访问令牌,但出于安全原因,我不建议这样做。