Symfony Can';无法让自定义用户提供程序使用FOSFacebookBundle和FOSUserBundle
我正试图让这两个捆绑包一起工作,以便在使用提供的facebook登录按钮登录facebook时创建并登录新用户 基于堆栈溢出的其他问题,我尝试了很多方法,但仍然无法使其工作。下面是我的代码(我已经在注释中列出了一些我尝试过的东西;我基本上尝试了与这些东西的各种可能组合): Config.ymlSymfony Can';无法让自定义用户提供程序使用FOSFacebookBundle和FOSUserBundle,symfony,fosuserbundle,Symfony,Fosuserbundle,我正试图让这两个捆绑包一起工作,以便在使用提供的facebook登录按钮登录facebook时创建并登录新用户 基于堆栈溢出的其他问题,我尝试了很多方法,但仍然无法使其工作。下面是我的代码(我已经在注释中列出了一些我尝试过的东西;我基本上尝试了与这些东西的各种可能组合): Config.yml fos_facebook: file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php alias: facebook
fos_facebook:
file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
alias: facebook
app_id: FOO
secret: BAR
cookie: true
permissions: [email, user_birthday]
fos_user:
db_driver: orm
firewall_name: public
user_class: Not\NotBundle\Entity\User
# fos_user_security:
# resource: "@FOSUserBundle/Resources/config/routing/security.xml"
_security_check:
pattern: /login_check
_security_logout:
pattern: /logout
security:
factories:
- "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
# chain_provider:
# providers: [fos_userbundle, my_fos_facebook_provider]
# fos_userbundle:
# id: fos_user.user_manager
my_fos_facebook_provider:
id: my.facebook.user
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: ^/.*
fos_facebook:
app_url: "http://apps.facebook.com/FOO/"
server_url: "http://not.not/facebookApp/"
login_path: ^/login$
check_path: ^/login_check$
default_target_path: /
provider: my_fos_facebook_provider
# form_login:
# login_path: /login
# check_path: /login_check
# provider: fos_userbundle
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
parameters:
#my_facebook_user.class: Not\NotBundle\Security\User\Provider\FacebookProvider
services:
my.facebook.user:
class: Not\NotBundle\Security\User\Provider\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
# userManager: "@my.facebook.user" # <-- Tried this as well but gives: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 523800 bytes) in /Foo/vendor/symfony/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php
validator: "@validator"
container: "@service_container"
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: ^/.*
fos_facebook:
app_url: "http://apps.facebook.com/Foo/"
server_url: "http://localhost/facebookApp/"
login_path: NotNotBundle_homepage
check_path: _security_check
default_target_path: /
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
Routing.yml
fos_facebook:
file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
alias: facebook
app_id: FOO
secret: BAR
cookie: true
permissions: [email, user_birthday]
fos_user:
db_driver: orm
firewall_name: public
user_class: Not\NotBundle\Entity\User
# fos_user_security:
# resource: "@FOSUserBundle/Resources/config/routing/security.xml"
_security_check:
pattern: /login_check
_security_logout:
pattern: /logout
security:
factories:
- "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
# chain_provider:
# providers: [fos_userbundle, my_fos_facebook_provider]
# fos_userbundle:
# id: fos_user.user_manager
my_fos_facebook_provider:
id: my.facebook.user
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: ^/.*
fos_facebook:
app_url: "http://apps.facebook.com/FOO/"
server_url: "http://not.not/facebookApp/"
login_path: ^/login$
check_path: ^/login_check$
default_target_path: /
provider: my_fos_facebook_provider
# form_login:
# login_path: /login
# check_path: /login_check
# provider: fos_userbundle
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
parameters:
#my_facebook_user.class: Not\NotBundle\Security\User\Provider\FacebookProvider
services:
my.facebook.user:
class: Not\NotBundle\Security\User\Provider\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
# userManager: "@my.facebook.user" # <-- Tried this as well but gives: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 523800 bytes) in /Foo/vendor/symfony/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php
validator: "@validator"
container: "@service_container"
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: ^/.*
fos_facebook:
app_url: "http://apps.facebook.com/Foo/"
server_url: "http://localhost/facebookApp/"
login_path: NotNotBundle_homepage
check_path: _security_check
default_target_path: /
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
Security.yml
fos_facebook:
file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
alias: facebook
app_id: FOO
secret: BAR
cookie: true
permissions: [email, user_birthday]
fos_user:
db_driver: orm
firewall_name: public
user_class: Not\NotBundle\Entity\User
# fos_user_security:
# resource: "@FOSUserBundle/Resources/config/routing/security.xml"
_security_check:
pattern: /login_check
_security_logout:
pattern: /logout
security:
factories:
- "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
# chain_provider:
# providers: [fos_userbundle, my_fos_facebook_provider]
# fos_userbundle:
# id: fos_user.user_manager
my_fos_facebook_provider:
id: my.facebook.user
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: ^/.*
fos_facebook:
app_url: "http://apps.facebook.com/FOO/"
server_url: "http://not.not/facebookApp/"
login_path: ^/login$
check_path: ^/login_check$
default_target_path: /
provider: my_fos_facebook_provider
# form_login:
# login_path: /login
# check_path: /login_check
# provider: fos_userbundle
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
parameters:
#my_facebook_user.class: Not\NotBundle\Security\User\Provider\FacebookProvider
services:
my.facebook.user:
class: Not\NotBundle\Security\User\Provider\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
# userManager: "@my.facebook.user" # <-- Tried this as well but gives: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 523800 bytes) in /Foo/vendor/symfony/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php
validator: "@validator"
container: "@service_container"
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: ^/.*
fos_facebook:
app_url: "http://apps.facebook.com/Foo/"
server_url: "http://localhost/facebookApp/"
login_path: NotNotBundle_homepage
check_path: _security_check
default_target_path: /
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
Services.yml
fos_facebook:
file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
alias: facebook
app_id: FOO
secret: BAR
cookie: true
permissions: [email, user_birthday]
fos_user:
db_driver: orm
firewall_name: public
user_class: Not\NotBundle\Entity\User
# fos_user_security:
# resource: "@FOSUserBundle/Resources/config/routing/security.xml"
_security_check:
pattern: /login_check
_security_logout:
pattern: /logout
security:
factories:
- "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
# chain_provider:
# providers: [fos_userbundle, my_fos_facebook_provider]
# fos_userbundle:
# id: fos_user.user_manager
my_fos_facebook_provider:
id: my.facebook.user
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: ^/.*
fos_facebook:
app_url: "http://apps.facebook.com/FOO/"
server_url: "http://not.not/facebookApp/"
login_path: ^/login$
check_path: ^/login_check$
default_target_path: /
provider: my_fos_facebook_provider
# form_login:
# login_path: /login
# check_path: /login_check
# provider: fos_userbundle
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
parameters:
#my_facebook_user.class: Not\NotBundle\Security\User\Provider\FacebookProvider
services:
my.facebook.user:
class: Not\NotBundle\Security\User\Provider\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
# userManager: "@my.facebook.user" # <-- Tried this as well but gives: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 523800 bytes) in /Foo/vendor/symfony/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php
validator: "@validator"
container: "@service_container"
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: ^/.*
fos_facebook:
app_url: "http://apps.facebook.com/Foo/"
server_url: "http://localhost/facebookApp/"
login_path: NotNotBundle_homepage
check_path: _security_check
default_target_path: /
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
参数:
#my\u facebook\u user.class:Not\NotBundle\Security\user\Provider\facebook Provider
服务:
my.facebook.user:
类别:Not\NotBundle\Security\User\Provider\FacebookProvider
论据:
facebook:“@fos_facebook.api”
用户经理:“@fos\u user.user\u manager”
#userManager:“@my.facebook.user”#检查fos\u facebook的路径
和表单登录
身份验证提供程序应该不同。将检查路径和登录路径更改为路由解决了我的问题:
security.yml
fos_facebook:
file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
alias: facebook
app_id: FOO
secret: BAR
cookie: true
permissions: [email, user_birthday]
fos_user:
db_driver: orm
firewall_name: public
user_class: Not\NotBundle\Entity\User
# fos_user_security:
# resource: "@FOSUserBundle/Resources/config/routing/security.xml"
_security_check:
pattern: /login_check
_security_logout:
pattern: /logout
security:
factories:
- "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
# chain_provider:
# providers: [fos_userbundle, my_fos_facebook_provider]
# fos_userbundle:
# id: fos_user.user_manager
my_fos_facebook_provider:
id: my.facebook.user
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: ^/.*
fos_facebook:
app_url: "http://apps.facebook.com/FOO/"
server_url: "http://not.not/facebookApp/"
login_path: ^/login$
check_path: ^/login_check$
default_target_path: /
provider: my_fos_facebook_provider
# form_login:
# login_path: /login
# check_path: /login_check
# provider: fos_userbundle
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
parameters:
#my_facebook_user.class: Not\NotBundle\Security\User\Provider\FacebookProvider
services:
my.facebook.user:
class: Not\NotBundle\Security\User\Provider\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
# userManager: "@my.facebook.user" # <-- Tried this as well but gives: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 523800 bytes) in /Foo/vendor/symfony/src/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php
validator: "@validator"
container: "@service_container"
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
public:
pattern: ^/.*
fos_facebook:
app_url: "http://apps.facebook.com/Foo/"
server_url: "http://localhost/facebookApp/"
login_path: NotNotBundle_homepage
check_path: _security_check
default_target_path: /
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
我知道,但我无论如何都不会使用表单登录。。还是我遗漏了什么?