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