Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2:HWIOAuthBundle:Facebook登录=>;惊人的行为_Symfony_Facebook Oauth_Hwioauthbundle - Fatal编程技术网

Symfony2:HWIOAuthBundle:Facebook登录=>;惊人的行为

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”似乎是正常的,正如

我已经在我的网站FOSUserBunle和HWIOAuthBunle中实现了这两个功能。经典登录表单(FOS)和谷歌登录(HWI)工作正常

我最近添加了Facebook登录,但当我尝试从我的登录页面使用此URI(简单链接)以这种方式登录时

我的网站/fr/connect/facebook/

登录过程在Facebook端启动良好,但我被重定向到我的登录页面,浏览器显示以下URI:

我的网站/fr/connect/#=

=>由于这一点,我没有被记录(这是我的主要问题,字符“#=u”似乎是正常的,正如在不同的帖子中所描述的那样)

我希望:

  • 我使用捆绑包的连接功能(新用户被记录到数据库,但必须选择密码)

  • 我没有任何使用Javascript SDK的Facebook登录按钮

更具体地说,我的配置如下:

config.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:
        #...    
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中配置的正确“客户端密码”不是安全部分中的“客户端令牌”,而是应用程序基本菜单中的“应用程序密码”。