FOSFacebookBundle没有将用户添加到数据库

时间:2012-11-18 02:02:03

标签: symfony

我已成功配置FOSUserBundle以连接到网站的管理部分,这非常有效。

我们希望公众用户只能通过Facebook登录网站,所以我也安装了FOSFacebookBundle,它可以运行。有点。我可以登录,验证,访问用户的个人资料页面并注销;一切都按预期工作。

但是,当用户通过Facebook登录时,用户不会添加到数据库中。我错误地认为这是文档(https://github.com/FriendsOfSymfony/FOSFacebookBundle)底部的“自定义用户提供程序”应该做的吗?

基本上,当Facebook登录发生时,添加用户(如有必要),然后通过FOSUserBundle获取。

我一次又一次地关注文档,在这里阅读有关SO的问题,无法弄清楚发生了什么(不是)。

任何人都有关于代码中某些内容可能导致登录操作不使用Facebook数据更新数据库的想法?

1 个答案:

答案 0 :(得分:2)

在security.yml中:

    providers:
        chain_provider:
            chain:
                providers: [my_fos_facebook_provider, fos_userbundle]
        my_fos_facebook_provider:
            id: my.facebook.user
        fos_userbundle:
            id: fos_user.user_manager
    firewalls:
        admin:
            pattern:      /admin(.*)
            form_login:
                provider:       fos_userbundle
                login_path:     /admin/login
                use_forward:    false
                check_path:     /admin/login_check
                failure_path:   null
            logout:
                path:           /admin/logout
            anonymous:    true
        public:
            # since anonymous is allowed users will not be forced to login
            pattern:   ^/.*
            fos_facebook:
                provider: my_fos_facebook_provider
                app_url: "http://www.facebook.com/apps/application.php?id=your_app_id"
                server_url: "http://localhost/facebookApp/"
                login_path: /
                check_path: /login_check_fb
                default_target_path: /moi
            anonymous: true
            logout:
                handlers: ["fos_facebook.logout_handler"]

这个想法是通过运行工厂用户名和密码访问管理员,普通用户通过Facebook登录。

现在,关键部分是定义多个提供者(我有),但最重要的是在每个防火墙中指定“提供者”。 admin的fos_userbundle和公共的my_fos_facebook_provider