使用 HWIOAuthBundle 登录 Facebook 后,语言环境回退到默认值
Locale fallbacks to the default value after Facebook login using HWIOAuthBundle
我有一个问题,当我在我的网站上切换语言并使用 HWIOAuthBundle
进行 Facebook 登录时,我总是会重定向到默认语言环境,我在 [=13] =]. (在我的例子中:"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
security.xml
中的 oauth 防火墙设置
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 帐户成功登录并重定向到以下 link:mysite.com/en#_=_
但是当我打开 mysite.com/de/login/facebook
时,我会重定向到与前一个案例相同的 url。似乎在重定向和回退到默认语言环境后语言环境没有通过。
在其他所有情况下,语言环境都可以正常工作。例如,我正在使用 FOSUserBundle,在登录、注销或注册后,我每次都会使用正确的语言环境进行重定向。
有人可以帮我解决这个问题吗?提前致谢!
好的,我找到了问题的根源。我在 facebook resource_owners
中使用了 %locale%
变量,它与 _locale
变量不同,但它是 parameters.yml
中的 locale
变量。所以我通过以下修改解决了我的问题:
- I made my Locale "sticky".
- 我将
facebook resource_owners
的值修改为facebook-login
路由。
之后我收到一条 No resource owner with name 'check-facebook'
错误消息,但我通过从 facebook-login
路由中删除所有 _locale
相关内容来解决它:
facebook_login:
path: /login/check-facebook
希望对其他人也有帮助:)
我有一个问题,当我在我的网站上切换语言并使用 HWIOAuthBundle
进行 Facebook 登录时,我总是会重定向到默认语言环境,我在 [=13] =]. (在我的例子中:"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
security.xml
中的 oauth 防火墙设置 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 帐户成功登录并重定向到以下 link:mysite.com/en#_=_
但是当我打开 mysite.com/de/login/facebook
时,我会重定向到与前一个案例相同的 url。似乎在重定向和回退到默认语言环境后语言环境没有通过。
在其他所有情况下,语言环境都可以正常工作。例如,我正在使用 FOSUserBundle,在登录、注销或注册后,我每次都会使用正确的语言环境进行重定向。
有人可以帮我解决这个问题吗?提前致谢!
好的,我找到了问题的根源。我在 facebook resource_owners
中使用了 %locale%
变量,它与 _locale
变量不同,但它是 parameters.yml
中的 locale
变量。所以我通过以下修改解决了我的问题:
- I made my Locale "sticky".
- 我将
facebook resource_owners
的值修改为facebook-login
路由。
之后我收到一条 No resource owner with name 'check-facebook'
错误消息,但我通过从 facebook-login
路由中删除所有 _locale
相关内容来解决它:
facebook_login:
path: /login/check-facebook
希望对其他人也有帮助:)