使用symfony2进行Facebook + UserBundlevalidation

我试图在symfony2上通过facebook或userbundle对我的用户进行身份validation

以下是我到目前为止所做的工作(虽然不是我想要的,但工作起来):

firewalls: main: pattern: .* fos_facebook: app_url: "http://apps.facebook.com/appName/" server_url: "http://localhost/facebookApp/" login_path: /fblogin check_path: /fblogin_check default_target_path: / provider: my_fos_facebook_provider form_login: check_path: /login_check anonymous: true logout: handlers: ["fos_facebook.logout_handler"] 

该configuration的问题是,当用户没有login,他被redirect到/login(form_login),而我希望他被默认redirect到Facebook身份validation

我已经尝试简单地删除form_login,但如果我访问/login(这是我想如何用户loginFacebook以外),它不知道/ login_check路线提交login表单

也许chain_provider会是一个解决scheme? 我也没有得到它的工作

一个容易和mabye更多可用的选项将显示login页面中的所有login选项(包括脸谱,微博,开放ID或任何你想使用)

供应链确实是解决这个问题的方法。 这里是你security.ymlconfiguration应该是这样的:

 providers: my_project.chain_provider: chain: providers: [fos_userbundle, my_project.facebook_provider] fos_userbundle: id: fos_user.user_provider.username_email my_project.facebook_provider: id: my_project.user_provider.facebook 

当然,您需要按照此处所述定义您自己的Facebook提供商

您应该为form_login添加fos_userbundle提供程序(并保留其余的configuration):

 form_login: provider: fos_userbundle 

我没有挖得太多,但是我认为Symfony2在这种情况下会自动创build一个链式提供者。

你也可以写你的事件监听器在哪里你会看看用户是直接进入/login表单还是通过redirect。