FOSFacebookBundle facebook_login_button({'autologoutlink':true}) 로그인 성공 후 '로그아웃'이 표시되지 않습니다.

StackOverflow https://stackoverflow.com//questions/10703525

  •  13-12-2019
  •  | 
  •  

문제

FOSUserBundle+FOSFacebookBundle을 구현했으며 일반 사용자와 Facebook 사용자 모두로 성공적으로 등록하고 로그인할 수 있습니다.

Facebook 사용자로 로그인하면 다음 세션이 생성됩니다.

  1. fbm_XXXXXX
  2. fbsr_XXXXXX

템플릿에는 다음 코드가 포함되어 있습니다.

{{ facebook_initialize({'xfbml': true, 'fbAsyncInit': 'onFbInit();'}) }}
{{ facebook_login_button({'autologoutlink': true}) }}
<script>
function goLogIn(){
    window.location = "{{ path('fos_facebook_security_check') }}";
}
function onFbInit() {
    if (typeof(FB) != 'undefined' && FB != null ) {
        FB.Event.subscribe('auth.statusChange', function(response) {
            if (response.session || response.authResponse) {
                setTimeout(goLogIn, 5000);
            } else {
                window.location = "{{ path('fos_user_security_logout') }}";
            }
        });
    }
}                      
</script>  

FB 로그인 버튼 팝업이 나타나면 양식을 이행하고 템플릿의 FB 로그인 버튼이 "로그아웃"으로 변경되며 리디렉션될 때까지 5초를 기다립니다.리디렉션 후 제대로 로그인되었지만 버튼이 다시 "로그아웃" 대신 "로그인"으로 바뀌고 적절한 Facebook 로그아웃을 강제할 수 없습니다.

어떤 아이디어가 잘못될 수 있나요?

해결됨있어야 한다 'status': true ~에 facebook_initialize 인수.

구성security.yml

services:
    my.facebook.user:
        class: Strict\UserBundle\Security\User\Provider\FacebookProvider
        arguments:
            facebook: "@fos_facebook.api"
            userManager: "@fos_user.user_manager"
            validator: "@validator"
            container: "@service_container"
    strict_user.my_provider:
        class: Strict\UserBundle\Security\User\Provider\StrictProvider
        public: false
        arguments: ["@fos_user.user_manager"]      
security:
    factories:
          - "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"

    providers:
        chain_provider:
            providers: [fos_userbundle, my_fos_facebook_provider]
        fos_userbundle:
            id: strict_user.my_provider
        my_fos_facebook_provider:
            id: my.facebook.user

    encoders:
        "FOS\UserBundle\Model\UserInterface": sha512

    firewalls:
        public:
            pattern:   ^/
            fos_facebook:
                app_url: "http://www.facebook.com/apps/application.php?id="
                server_url: "http://localhost/web/app_dev.php"
                login_path: fos_user_security_login
                check_path: fos_facebook_security_check
                default_target_path: homepage
                provider: my_fos_facebook_provider
            form_login:
                login_path: fos_user_security_login
                check_path: fos_user_security_check
                provider: fos_userbundle
            anonymous: true           
            logout:
                path: fos_user_security_logout    
                target: homepage

나머지 파일에 대해서는 사용자 및 Facebook 번들의 문서를 확인하세요.

도움이 되었습니까?

해결책

있어야 한다 'status': true ~에 facebook_initialize 인수.

{{ facebook_initialize({'xfbml': true, 'fbAsyncInit': 'onFbInit();', 'status': true }) }}

구성security.yml

services:
    my.facebook.user:
        class: Strict\UserBundle\Security\User\Provider\FacebookProvider
        arguments:
            facebook: "@fos_facebook.api"
            userManager: "@fos_user.user_manager"
            validator: "@validator"
            container: "@service_container"
    strict_user.my_provider:
        class: Strict\UserBundle\Security\User\Provider\StrictProvider
        public: false
        arguments: ["@fos_user.user_manager"]      
security:
    factories:
          - "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"

    providers:
        chain_provider:
            providers: [fos_userbundle, my_fos_facebook_provider]
        fos_userbundle:
            id: strict_user.my_provider
        my_fos_facebook_provider:
            id: my.facebook.user

    encoders:
        "FOS\UserBundle\Model\UserInterface": sha512

    firewalls:
        public:
            pattern:   ^/
            fos_facebook:
                app_url: "http://www.facebook.com/apps/application.php?id="
                server_url: "http://localhost/web/app_dev.php"
                login_path: fos_user_security_login
                check_path: fos_facebook_security_check
                default_target_path: homepage
                provider: my_fos_facebook_provider
            form_login:
                login_path: fos_user_security_login
                check_path: fos_user_security_check
                provider: fos_userbundle
            anonymous: true           
            logout:
                path: fos_user_security_logout    
                target: homepage

나머지 파일에 대해서는 사용자 및 Facebook 번들의 문서를 확인하세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top