Symfony2:HWIOAuthBundle:Facebook登录=>;惊人的行为
我已经在我的网站FOSUserBunle和HWIOAuthBunle中实现了这两个功能。经典登录表单(FOS)和谷歌登录(HWI)工作正常 我最近添加了Facebook登录,但当我尝试从我的登录页面使用此URI(简单链接)以这种方式登录时 我的网站/fr/connect/facebook/ 登录过程在Facebook端启动良好,但我被重定向到我的登录页面,浏览器显示以下URI: 我的网站/fr/connect/#= =>由于这一点,我没有被记录(这是我的主要问题,字符“#=u”似乎是正常的,正如在不同的帖子中所描述的那样) 我希望:Symfony2:HWIOAuthBundle:Facebook登录=>;惊人的行为,symfony,facebook-oauth,hwioauthbundle,Symfony,Facebook Oauth,Hwioauthbundle,我已经在我的网站FOSUserBunle和HWIOAuthBunle中实现了这两个功能。经典登录表单(FOS)和谷歌登录(HWI)工作正常 我最近添加了Facebook登录,但当我尝试从我的登录页面使用此URI(简单链接)以这种方式登录时 我的网站/fr/connect/facebook/ 登录过程在Facebook端启动良好,但我被重定向到我的登录页面,浏览器显示以下URI: 我的网站/fr/connect/#= =>由于这一点,我没有被记录(这是我的主要问题,字符“#=u”似乎是正常的,正如
- 我使用捆绑包的连接功能(新用户被记录到数据库,但必须选择密码)
- 我没有任何使用Javascript SDK的Facebook登录按钮
# HWIOauth Configuration
hwi_oauth:
# name of the firewall in which this bundle is active, this setting MUST be set
firewall_name: main
resource_owners:
google:
type: google
client_id: xxxxxxxxxxxxxxxxxx
client_secret: xxxxxxxxxxxxxxxxxx
scope: "email profile"
facebook:
type: facebook
client_id: xxxxxxxxxxxxxxxxxx
client_secret: xxxxxxxxxxxxxxxxxx
scope: "email public_profile"
fosub:
# try 30 times to check if a username is available (foo, foo1, foo2 etc)
username_iterations: 30
# mapping between resource owners (see below) and properties
properties:
google: googleId
facebook: facebookId
connect:
confirmation: true
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /{_locale}/connect
requirements:
_locale: en|fr
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /{_locale}/connect
requirements:
_locale: en|fr
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
prefix: /{_locale}/connect
requirements:
_locale: en|fr
google_login:
pattern: /{_locale}/login/check-google
requirements:
_locale: en|fr
facebook_login:
pattern: /{_locale}/login/check-facebook
requirements:
_locale: en|fr
MyUserBundle:
resource: "@MyUserBundle/Resources/config/routing.yml"
prefix: /{_locale}/profile
requirements:
_locale: en|fr
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
prefix: /{_locale}
requirements:
_locale: en|fr
# Other FOS routes...
security:
encoders:
#...
role_hierarchy:
#...
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
provider: fos_userbundle
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: mybundle_homepage
csrf_provider: form.csrf_provider
logout:
path: fos_user_security_logout
target: mybundle_homepage
handlers: [mybundle_user.logout_handler]
remember_me:
key: %secret%
lifetime: 31536000
oauth:
resource_owners:
google: google_login
facebook: facebook_login
login_path: fos_user_security_login
use_forward: false
failure_path: hwi_oauth_connect
default_target_path: mybundle_homepage
oauth_user_provider:
service: mybundle_user.provider.fosub_bridge
access_control:
#...
routing.yml
# HWIOauth Configuration
hwi_oauth:
# name of the firewall in which this bundle is active, this setting MUST be set
firewall_name: main
resource_owners:
google:
type: google
client_id: xxxxxxxxxxxxxxxxxx
client_secret: xxxxxxxxxxxxxxxxxx
scope: "email profile"
facebook:
type: facebook
client_id: xxxxxxxxxxxxxxxxxx
client_secret: xxxxxxxxxxxxxxxxxx
scope: "email public_profile"
fosub:
# try 30 times to check if a username is available (foo, foo1, foo2 etc)
username_iterations: 30
# mapping between resource owners (see below) and properties
properties:
google: googleId
facebook: facebookId
connect:
confirmation: true
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /{_locale}/connect
requirements:
_locale: en|fr
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /{_locale}/connect
requirements:
_locale: en|fr
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
prefix: /{_locale}/connect
requirements:
_locale: en|fr
google_login:
pattern: /{_locale}/login/check-google
requirements:
_locale: en|fr
facebook_login:
pattern: /{_locale}/login/check-facebook
requirements:
_locale: en|fr
MyUserBundle:
resource: "@MyUserBundle/Resources/config/routing.yml"
prefix: /{_locale}/profile
requirements:
_locale: en|fr
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
prefix: /{_locale}
requirements:
_locale: en|fr
# Other FOS routes...
security:
encoders:
#...
role_hierarchy:
#...
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
provider: fos_userbundle
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: mybundle_homepage
csrf_provider: form.csrf_provider
logout:
path: fos_user_security_logout
target: mybundle_homepage
handlers: [mybundle_user.logout_handler]
remember_me:
key: %secret%
lifetime: 31536000
oauth:
resource_owners:
google: google_login
facebook: facebook_login
login_path: fos_user_security_login
use_forward: false
failure_path: hwi_oauth_connect
default_target_path: mybundle_homepage
oauth_user_provider:
service: mybundle_user.provider.fosub_bridge
access_control:
#...
security.yml
# HWIOauth Configuration
hwi_oauth:
# name of the firewall in which this bundle is active, this setting MUST be set
firewall_name: main
resource_owners:
google:
type: google
client_id: xxxxxxxxxxxxxxxxxx
client_secret: xxxxxxxxxxxxxxxxxx
scope: "email profile"
facebook:
type: facebook
client_id: xxxxxxxxxxxxxxxxxx
client_secret: xxxxxxxxxxxxxxxxxx
scope: "email public_profile"
fosub:
# try 30 times to check if a username is available (foo, foo1, foo2 etc)
username_iterations: 30
# mapping between resource owners (see below) and properties
properties:
google: googleId
facebook: facebookId
connect:
confirmation: true
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /{_locale}/connect
requirements:
_locale: en|fr
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /{_locale}/connect
requirements:
_locale: en|fr
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
prefix: /{_locale}/connect
requirements:
_locale: en|fr
google_login:
pattern: /{_locale}/login/check-google
requirements:
_locale: en|fr
facebook_login:
pattern: /{_locale}/login/check-facebook
requirements:
_locale: en|fr
MyUserBundle:
resource: "@MyUserBundle/Resources/config/routing.yml"
prefix: /{_locale}/profile
requirements:
_locale: en|fr
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
prefix: /{_locale}
requirements:
_locale: en|fr
# Other FOS routes...
security:
encoders:
#...
role_hierarchy:
#...
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
provider: fos_userbundle
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: mybundle_homepage
csrf_provider: form.csrf_provider
logout:
path: fos_user_security_logout
target: mybundle_homepage
handlers: [mybundle_user.logout_handler]
remember_me:
key: %secret%
lifetime: 31536000
oauth:
resource_owners:
google: google_login
facebook: facebook_login
login_path: fos_user_security_login
use_forward: false
failure_path: hwi_oauth_connect
default_target_path: mybundle_homepage
oauth_user_provider:
service: mybundle_user.provider.fosub_bridge
access_control:
#...
Facebook开发者控制台
Apps Basic :
I use App ID for "client_id" in HWIOAUthBundle
Security section :
I use Client Token for "client_secret" in HWIOAUthBundle
OAuth Settings Section :
Client OAuth Login :
Yes
Valid OAuth redirect URIs :
http://mywebsite/fr/login/check-facebook
http://mywebsite/en/login/check-facebook
http://mywebsite/fr/connect/service/facebook
http://mywebsite/en/connect/service/facebook
问题解决了。由于在我的twig文件中进行了一些修改(在这里没有任何重要性),我无法看到以下错误:“验证客户端机密时出错”。要在HWIOAuthBundle中配置的正确“客户端密码”不是安全部分中的“客户端令牌”,而是应用程序基本菜单中的“应用程序密码”。