根据其文档,我已经在FOSUserBundle的SonataUserBundle中实现了FOSFacebookBundle。Facebook登出无法正常工作
config.yml :
fos_facebook:
alias: facebook
app_id: xxxxxxxx597242
secret: xxxxxxxxxxxxxxxxxxxx2a6e7
cookie: true
permissions: [email, user_birthday, user_location]
services:
fos_facebook.user.login:
class: Webmuch\UserBundle\Security\User\Provider\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
validator: "@validator"
security.yml:
providers:
chain_provider:
chain:
providers: [fos_userbundle,fos_facebook_provider]
fos_userbundle:
id: fos_user.user_provider.username_email
fos_facebook_provider:
id: fos_facebook.user.login
firewalls:
main:
pattern: ^/
fos_facebook:
app_url: "https://developers.facebook.com/apps/xxxxxxxx597242"
server_url: "http://localhost/Mysite/web/app_dev.php/"
login_path: /login
check_path: /login_check
provider: fos_facebook_provider
default_target_path:/
form_login:
provider: fos_userbundle
login_path: /login
use_forward: false
check_path: /login_check
failure_path: null
logout:
path: /logout
target:/
anonymous: true
base.html.twig:
{{ facebook_initialize({'xfbml': true, 'fbAsyncInit': 'onFbInit();'}) }}
{{ facebook_login_button({'autologoutlink': true}) }}
{% block javascripts %}
<script>
function goLogIn(){
window.location.href = "{{ 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, 500);
} else {
window.location.href = "{{ path('fos_user_security_logout') }}";
}
});
}
}
</script>
{% endblock %}
我的Facebook的提供者和使用者实体被设置为每文档。
这是工作得很好,但现在更新后的新版本,它是登录成功后在我的网站身份验证,但当我点击Facebook登出按钮,现在只有Facebook登出,而在我的网站,我仍然在登录状态下,即它不会破坏我的站点身份验证会话。
我不知道我做错了什么。