Symfony2 - HWIOAuthBundle - вход через Facebook

Я следил за комплектом документации по настройке HWIOAuthBundle для facebook. Затем я последовал этому примеру для facebook отображается кнопка входа в систему, и она, кажется, работает, но она не завершена. Я застрял и не знаю, что делать дальше. После того, как я нажму кнопку входа в Facebook и войду в Facebook, я получаю сообщение об ошибке:

Unable to find the controller for path "/sign-in/check-facebook". The route is wrongly configured.

config.yml

hwi_oauth:
    firewall_name: hwi_oauth
    resource_owners:
        facebook:
            type:           facebook
            client_id:      "%facebook_client_id%"
            client_secret:  "%facebook_client_secret%"
            scope:          email
            options:
                display:    popup
                auth_type:  rerequest
                csrf:       true

безопасность.yml

firewalls:
    hwi_oauth:
        pattern:    ^/
        anonymous:  ~
        oauth:
            resource_owners:
                facebook: /sign-in/check-facebook
            login_path:   /sign-in
            failure_path: /sign-in
            oauth_user_provider:
                service: oauth_user_provider

маршрутизация.yml

hwi_oauth_redirect:
    resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
    prefix:   /connect

hwi_oauth_login:
    resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
    prefix:   /sign-in

facebook_login:
    path: /sign-in/check-facebook

Так для чего нужен этот /sign-in/check-facebook? Почему мое приложение не может его найти? Должен ли я создавать для него контроллер?

В документации здесь сказано, что информация можно получить через объект ответа, но где мне написать этот код?


person Ignas Damunskis    schedule 20.06.2016    source источник
comment
После ненужной траты времени предлагаю решить вопрос с подключением к официальному Facebook - developers.facebook .com/docs/php/howto/example_facebook_login   -  person Shay Altman    schedule 20.06.2016


Ответы (2)


Взгляните на свой security.yml. Есть ли у вас какие-либо другие брандмауэры, которые приложение может обрабатывать до вашего hwi_oauth брандмауэра? Кажется, у @jkuri была эта проблема здесь: https://github.com/hwi/HWIOAuthBundle/issues/781#issuecomment-100468744

Его ответ:

Чтобы ответить на мой собственный вопрос ... добавленный брандмауэр olta_portal перед основным брандмауэром ... не знаю, в чем проблема, может быть, из-за одного и того же шаблона ^/ в обоих брандмауэрах. Работаю сейчас.

Я тоже раньше боролся с этой проблемой! Еще одна проверка работоспособности — выполнить php app/console debug:router | grep facebook, чтобы убедиться, что ваш маршрут вообще зарегистрирован в приложении.

person Cameron Hurd    schedule 20.06.2016
comment
Так и есть. Благодарю вас! - person Ignas Damunskis; 21.06.2016

Я много боролся при настройке HWIOAuthBundle, и поэтому, когда я, наконец, получил правильную конфигурацию, я убедился, что никогда не забуду ее, добавив ее в неплохой туториал:

firewalls:
    main:
        pattern: ^/
        oauth:
            failure_path: your_path
            login_path: your_path
            check_path: /connect_check
            provider: fos_userbundle
            resource_owners:
                facebook: "/login/check-facebook"
                google: "/login/check-google"
            oauth_user_provider:
                service: app.provider.oauth

В учебнике также объясняется, как правильно настроить FOSUBUserProvider, UserModel и как добавить ссылки.

person Sebastian    schedule 16.01.2017