Facebook + UserBundle Authentication with symfony2

2022-08-30 13:43:00

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

以下是我到目前为止所做的工作(它有效,尽管不是我想要的):

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,但是如果我访问/login(这是我希望用户在Facebook之外登录的方式),它不知道提交登录表单的/login_check路由

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


答案 1

一个简单且更可用的选项是在登录页面中显示所有登录选项(包括Facebook,twitter,open id或您要使用的任何内容)


答案 2

连锁供应商确实是这个问题的解决方案。以下是您的安全.yml config 应该是什么样子:

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提供商,如这里所述


推荐