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