2015-07-16 8 views
0

У меня проблема, когда я переключаю язык на своем сайте, и я пользуюсь в Facebook с помощью HWIOAuthBundle, я всегда получаю перенаправление к языку по умолчанию, что я установил в config.yml. (в моем случае: "ан")Локальная резервная копия значения по умолчанию после входа в Facebook с использованием HWIOAuthBundle

routing.yml

# Facebook Connect 
hwi_oauth_security: 
    resource: "@HWIOAuthBundle/Resources/config/routing/login.xml" 
    prefix: /{_locale}/login 
    defaults: { _locale: en } 
    requirements: 
     _locale: en|de 

hwi_oauth_connect: 
    resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml" 
    prefix: /{_locale}/login 
    defaults: { _locale: en } 
    requirements: 
     _locale: en|de 

hwi_oauth_redirect: 
    resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml" 
    prefix: /{_locale}/login 
    defaults: { _locale: en } 
    requirements: 
     _locale: en|de 

facebook_login: 
    path: /{_locale}/login/check-facebook 
    defaults: { _locale: en } 
requirements: 
    _locale: en|de 

# Site Routing # 
homepage: 
    path:  /{_locale} 
    defaults: { _controller: MyPageBundle:Homepage:index, _locale: en } 
    requirements: 
     _locale: en|de 

настройки OAuth брандмауэра в security.xml

firewalls: 
     main: 
      oauth: 
       resource_owners: 
        facebook: "/%locale%/login/check-facebook" 
       login_path: fos_user_security_login 
       failure_path: fos_user_security_login 
       oauth_user_provider: 
        service: hwi_oauth_user_provider 
       always_use_default_target_path: true 
       default_target_path: "/%locale%" 

После этого, когда я открываю mysite.com/en/login/facebook, я успешно войдите в мою учетную запись на facebook и перейдите по следующей ссылке: mysite.com/en#_=_

Но когда я открою mysite.com/de/login/facebook, я получаю перенаправление на тот же URL-адрес, что и в предыдущем случае. Кажется, что локаль не проходит после перенаправления и не возвращается к языку по умолчанию.

В каждом другом случае язык работает нормально. Например, я использую FOSUserBundle, и после входа в систему, выхода из системы или регистрации я получаю перенаправление с правильной локалью каждый раз.

Может ли кто-нибудь помочь мне решить эту проблему? Заранее спасибо!

ответ

0

Хорошо, что я нашел источник проблемы. Я использовал переменную %locale% в моем facebook resource_owners, которая не совпадает с переменной _locale, но она является переменной locale в моем parameters.yml. Поэтому я решил свою проблему со следующими изменениями:

После этого я получил сообщение об ошибке в No resource owner with name 'check-facebook', но я решил ее, удалив каждые _locale связанные вещи из facebook-login маршрута:

facebook_login: 
    path: /login/check-facebook 

Я надеюсь, что это будет помогает другим тоже :)