我有一个问题,当我在我的网站上切换语言时,我使用HWIOAuthBundle
做一个Facebook登录,我总是重定向到默认的语言环境,我在config.yml
中设置的。(在我的例子中:"en")
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 firewall Settings in 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,登录,注销或注册后,我每次都获得正确的语言环境重定向。
有人能帮我解决这个问题吗?提前感谢!好的,我找到了问题的根源。我在我的facebook resource_owners
中使用了%locale%
变量,这与_locale
变量不同,但它是我的parameters.yml
中的locale
变量。所以我通过以下修改解决了我的问题:
- 我把我的Locale设置为"sticky"。
- 我将
facebook resource_owners
路由的值修改为facebook-login
路由。
之后,我收到了No resource owner with name 'check-facebook'
错误消息,但我通过删除facebook-login
路由中所有_locale
相关的东西来解决它:
facebook_login:
path: /login/check-facebook
我希望这对其他人也有帮助。