首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FOSFacebookBundle重定向问题

FOSFacebookBundle重定向问题
EN

Stack Overflow用户
提问于 2012-10-03 09:28:26
回答 1查看 562关注 0票数 2

我在我的网站上用FOSFacebookBundle和FOSUserBundle做订阅时遇到了一些麻烦.

这是我的密码:

base.html.twig

代码语言:javascript
复制
<html xmlns:fb="http://www.facebook.com/2008/fbml">

<!-- TEMPLATE STUFF -->

function goLogIn(){
    alert('enter goLogin function');
    window.location = "{{ path('_security_check') }}";
}

function onFbInit() {
    alert('enter onFbInit');
    if (typeof(FB) != 'undefined' && FB != null ) {
        FB.Event.subscribe('auth.statusChange', function(response) {
            alert('Status Changed');
            if (response.session || response.authResponse) {
                setTimeout(goLogIn, 500);
            } else {
                window.location = "{{ path('_security_logout') }}";
            }
        });
    }
}
{{ facebook_initialize({'xfbml': true, 'fbAsyncInit': 'onFbInit();'}) }}

config.yml

代码语言:javascript
复制
fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Modnar\Bundle\UserBundle\Entity\User

fos_facebook:
    file:   %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
    alias:  facebook
    app_id: APP_ID                    // I put my own APP_ID here
    secret: APP_SECRET                // I put my own APP_SECRET here
    cookie: true
    permissions: [email, user_birthday, user_location]

services:
    my.facebook.user:
        class: Modnar\Bundle\UserBundle\Security\User\Provider\FacebookProvider
        arguments:
            facebook: "@fos_facebook.api"
            userManager: "@fos_user.user_manager"
            validator: "@validator"
            container: "@service_container"

security.yml

代码语言:javascript
复制
# app/config/security.yml
security:
    factories:
          - "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"

    providers:
        fos_userbundle:
            id: fos_user.user_manager
        my_fos_facebook_provider:
            id: my.facebook.user

    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            fos_facebook:
                app_url: "http://apps.facebook.com/APP_NAME/" // I put my own APP_NAME here
                server_url: "http://APP_URL/"                 // I put my own APP_URL here
                login_path: /login
                check_path: /login_fb_check
                default_target_path: /
                provider: my_fos_facebook_provider
            logout:
                handlers: ["fos_facebook.logout_handler"]
            anonymous:    true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

routing.yml

代码语言:javascript
复制
_security_check:
    pattern:  /login_fb_check
_security_logout:
    pattern:  /logout

此时,Facebook图标在我的/login页面上,我可以连接到Facebook,但我没有重定向到任何地方。为了获取跟踪,我在js上放置了一些警告,只显示了一个警告:“输入onFbInit”。也许我在某个地方错过了一步,但我找不到。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-04-23 06:04:42

我通过在打开标签后直接放置facebook的javascript代码来解决这个问题。

看看文件上写着什么:

注意,我们需要在初始化Facebook之前包含这段代码,以便正确触发onFbInit()事件侦听器(在本例中,在“body”标记的开头和这个包提供的模板助手之间) 在重定向之前,我们要等500 We才能让浏览器处理Facebook cookie。您可以避免此步骤,但您可能会收到以下错误消息:“无法从会话中检索Facebook用户。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12705558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档