我是一名相当新手的Symfony(v3)开发人员,并尝试使用HWIOAuthBundle在我的Web应用程序上实现Facebook登录。我已经阅读过OAuth2并了解使用授权码的基本工作流程。此外,我在tutorial研究了Facebook的相关内容。我也跟着完整的HWIOAuthBundle tutorial。然而,由于HWIOAuth方面的文档非常稀少,我仍然无法掌握所有的魔法"发生在束内的引擎盖下。
(1)我不完全理解示例Twig Template:
(a)如果我理解正确,如果response.status === 'connected'
,则Facebook已经返回了访问令牌。在模板中,调用url("hwi_oauth_service_redirect", {service: "facebook"})
。我是否正确地假设服务后面的控制器然后从Facebook加载其余的用户信息,然后调用配置的oauth_user_provider
以在symfony中启动身份验证过程?
(b)如果response.status
不等于connected
,那么用户仍然没有登录(要么不进入Facebook,要么不进入应用程序)。在Twig模板中,再次对url("hwi_oauth_service_redirect", {service: "facebook"})
进行重定向。 为什么再次调用相同的控制器,然后又做了什么?
(2)我不了解所有配置参数,如HWIOAuthBundle tutorial所示:
(a) routing.yml :
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /login
有益吗?
(b) security.yml :
oauth:
resource_owners:
facebook: "/login/check-facebook"
login_path: /login
failure_path: /login
/login/check-facebook
背后的内容是什么?login_path
的目的是什么,/login
背后的内容是什么?答案 0 :(得分:2)
1)a)否。控制器(link)最终将用户重定向到授权URL它将用户重定向到授权URL
1)b)您可以登录Facebook但过去可能拒绝了该应用。 FB.login再次询问用户权限(这就是范围:电子邮件被添加到那里的原因)
2)a)如果你检查file你会看到它在“/”路径下添加路由,它会在前缀下加载登录路由,这个前缀可以帮助你避免与其他路由发生冲突
2)b)它不是一个真正的路由,它被防火墙拦截以检查用户身份验证。如果你已经实现了一个普通的登录html表单,它与/ login_check相同,那就是你登录html表单动作的地方,但它背后没有控制器。 Symfony的安全性非常灵活,所以它可以让你的头很复杂,我建议你从Sarah Khalil那里看到这个slides。 login_path是您的普通登录表单所在的位置,在这种情况下,它是您的Facebook登录按钮以及您的twig模板的其余部分所在的位置。