Подтвердить что ты не робот

Facebook + аутентификация UserBundle с помощью symfony2

Я пытаюсь аутентифицировать своих пользователей через 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 будет решением? Я не получил его работу

4b9b3361

Ответ 1

Легким и более удобным вариантом будет показать все параметры входа на странице входа (включая facebook, твиттер, открытый идентификатор или что бы вы ни хотели использовать)

Ответ 2

Поставщики цепей действительно являются решением этой проблемы. Вот как вы выглядите: security.yml config shoud:

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, как указано здесь

Ответ 3

Вы должны добавить поставщика fos_userbundle для form_login (и сохранить остальную часть конфигурации):

form_login:
    provider: fos_userbundle

Я не копал слишком много, но я думаю, что Symfony2 автоматически создает прикованный провайдер в этом случае.

Ответ 4

Также вы можете написать прослушиватель событий, в котором вы будете искать, будет ли пользователь обращаться к форме входа/входа напрямую или перенаправлением.