我正在尝试使用 facebook 与 php 连接,即使在会话被破坏后用户仍将保持登录到我的网站,这一点很重要。
我已经从 SDK 运行了with_js_sdk.php示例。在这种情况下,用户必须在每个会话中重新登录。使用example.php方法,它不会发生,并且用户永远保持登录状态。
我想问这是为什么?是否可以让第一种方法使用户始终登录?
顺便说一句,我认为我需要 PHP + JS 组合,因为我不想在登录时刷新页面。这是真的吗?
谢谢...
我正在尝试使用 facebook 与 php 连接,即使在会话被破坏后用户仍将保持登录到我的网站,这一点很重要。
我已经从 SDK 运行了with_js_sdk.php示例。在这种情况下,用户必须在每个会话中重新登录。使用example.php方法,它不会发生,并且用户永远保持登录状态。
我想问这是为什么?是否可以让第一种方法使用户始终登录?
顺便说一句,我认为我需要 PHP + JS 组合,因为我不想在登录时刷新页面。这是真的吗?
谢谢...
这两个示例都应该让用户保持登录状态。必要的登录数据存储在 cookie 中并重复使用。
可能是什么问题:我发现“$user = $facebook->getUser();” 即使用户登录,调用有时也会失败。我的建议是不要依赖该调用,而是跳到下面的 try/catch 块,然后从那里设置用户。
试试 { $user_profile = $facebook->api('/me'); $user = $user_profile['user_id']; } 捕捉 (FacebookApiException $e) { $user_profile = false; $用户=空;}
因为这看起来更可靠。
做不到这一点,你可以自己控制这一切。步骤是:
您不应该需要最后一种方法(除非在会话/设备之间共享令牌,或希望离线访问),因为这正是 facebook SDK 所做的 - 但它确实可以帮助您更多地控制和理解 hte 过程。
最后,您可以通过 JavaScript 完成所有 login / getAccessToken / store cookie 方法,从而在不刷新页面的情况下登录并记住用户。只需检查 auth.login 上的适当操作以记住 cookie 并更改页面内容 - 不要重新加载页面。
下次用户刷新页面/返回站点时,PHP 将读取 cookie。记得在注销时清除 cookie。
所以你可以做你想做的,是的。