【问题标题】:Authenticate Facebook users in Cakephp 3x在 Cakephp 3x 中验证 Facebook 用户
【发布时间】:2015-02-21 12:25:32
【问题描述】:

我在 CakePHP 3(测试版)中使用 PHP SDK-4 进行 Facebook 登录,效果很好。
现在,我需要根据 FB 登录获取用户数据并验证用户身份。我正在尝试使用 Cake 的 Auth 组件。最初,在尝试对用户进行身份验证时,

$this->Auth->setUser($user)

知道了

错误:会话已经开始
,因为我们需要 session_start() 来登录 Facebook。
1- 尝试使用 enter link description here 和会话 [session_write_close()] 等...仍然无法正常工作。
我能否了解使用 Facebook 登录网站对用户进行身份验证的最佳方式?

【问题讨论】:

  • Cakes Auth 系统已经开始了一个会话,这也是错误告诉你的很清楚的内容。您需要弄清楚 FB auth 的工作原理并为 Cake3 编写一个 auth 适配器。
  • @burzum 我认为是相反的,手册session_start() 启动了会话,如果是CakePHP 启动了会话,那么Session::start() 不会达到此错误消息的地步被抛出。
  • @ndm 好吧,这取决于他在哪里调用 session_start() 但现在我再次阅读它,我认为你是对的。

标签: facebook-graph-api cakephp authentication cakephp-3.0


【解决方案1】:

CakePHPs 会话是延迟启动的,也就是说,一旦您尝试以某种方式访问​​会话,它们就会启动,如果会话是事先手动启动的,您将收到该错误,请参阅Session::start()

您可以通过 CakePHP 手动启动会话来轻松解决此问题。会话对象是available in the current request,因此例如在您的控制器中使用 SDK 之前,您可以简单地执行类似的操作

$this->request->session()->start();

然后 Facebook SDK 应该能够获取它。

正如 burzum 在 cmets 中已经提到的,身份验证最好包含在身份验证处理程序中。

我建议看看HybridAuth,还有一个CakePHP plugin 用于无缝集成到CakePHPs 身份验证机制中,这可能会给您一些自定义实现的想法,以防您需要使用v4 SDK,@ 987654325@ HybridAuth。

【讨论】:

  • 感谢您的建议。将调查提到的处理程序。
  • 这解决了我将 Facebook SDK 添加到 CakePHP3 的一些问题。
  • cakephp3 插件未下载,能否提供我的社交登录插件??
猜你喜欢
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
相关资源
最近更新 更多