使用symfony2进行Facebook + UserBundle身份验证

时间:2011-09-24 21:17:10

标签: php facebook symfony

我正在尝试通过facebook或userbundle在symfony2上验证我的用户

这是我到目前为止所做的事情(虽然不是我想要的但它仍然有效):

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"]

该配置的问题在于,当用户未登录时,他被重定向到/ login(form_login),而我希望他默认重定向到Facebook身份验证

我已经尝试过简单地删除form_login,但是如果我访问/登录(这是我希望用户在facebook外登录的方式),它就不知道提交登录表单的/ login_check路由

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

4 个答案:

答案 0 :(得分:1)

一个简单易用的mabie选项是显示登录页面中的所有登录选项(包括facebook,twitter,open id或者你想要使用的任何内容)

答案 1 :(得分:1)

连锁提供商确实是解决这个问题的方法。这是你security.yml配置的样子:

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

当然,您需要按照here

所述定义自己的Facebook提供商

答案 2 :(得分:0)

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

form_login:
    provider: fos_userbundle

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

答案 3 :(得分:0)

此外,您可以在event listener写下您将查看用户是直接访问/登录表单还是重定向。