2

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

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

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

如果用户/浏览器禁用 3rd-party cookie,是否根本无法集成 js+php sdk?我的 PHP 后端代码还能如何确定我正在处理的 facebook 用户?

4

2 回答 2

1

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

于 2013-10-19T07:39:31.133 回答
1

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

于 2013-10-27T06:32:59.073 回答