2012-11-18 52 views
0

我已成功配置FOSUserBundle以连接到网站的管理部分,这很好。FOSFacebookBundle不会将用户添加到数据库中

我们希望公共用户只能通过Facebook登录网站,所以我还安装了FOSFacebookBundle,它的工作原理。有点。我可以登录,验证,访问用户的个人资料页面和注销;所有这些都按预期工作。

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

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

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

任何人都有想法,在代码中可能导致登录操作不更新数据库与Facebook数据的地方?

回答

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登录的运行进行访问。

现在,关键部分是定义多个提供程序(我有),但最重要的可能是在每个防火墙中指定“提供程序”。管理员的fos_userbundle和公开的my_fos_facebook_provider

+0

+1到最后的关键部分。 – richsage