2012-11-18 54 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