我可以用FOSFacebookBundle登錄,一切正常。但是,FOSUserBundle似乎不起作用,因爲Profiler顯示用戶名:anon和角色:{}。並且,在數據庫中沒有關於登錄用戶的用戶數據。也許,我不明白它是如何工作的。請幫忙。FOSFacebookBundle的作品,但FOSUserBundle似乎並不工作
這是我config.yml
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: public
user_class: Trade\TradeBundle\Entity\User
fos_facebook:
file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
alias: facebook
app_id: my_app_id
secret: app_secret_key
cookie: true
permissions: [user_about_me]
services:
fos_facebook.auth:
class: Trade\TradeBundle\Security\User\Provider\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
validator: "@validator"
container: "@service_container"
這是我security.yml
security:
factories:
- "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"
role_hierarchy:
ROLE_ADMIN: ROLE_FACEBOOK
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
my_fos_facebook:
id: fos_facebook.auth
firewalls:
public:
pattern: ^/.*
fos_facebook:
app_url: "app_url"
server_url: "server_url"
login_path: /user/login
check_path: /user/login_check
default_target_path:/
provider: my_fos_facebook
anonymous: true
logout:
handlers: ["fos_facebook.logout_handler"]
下面的代碼似乎沒有工作,因爲當我與Facebook的setTimeout(goLogIn,500登錄)函數裏面如果沒有被調用。
function goLogIn(){
window.location.href = "{{ path('user_login_check') }}";
}
function onFbInit() {
if (typeof(FB) != 'undefined' && FB != null) {
FB.Event.subscribe('auth.statusChange', function(response) {
if (response.session || response.authResponse) {
setTimeout(goLogIn, 500);
} else {
window.location.href = "{{ path('_security_logout') }}";
}
});
}
}
這些都是我的控制器操作:
/**
* @Route("/user/login", name = "user_login")
*/
public function loginAction()
{
}
/**
* @Route("/user/login_check", name = "user_login_check")
*/
public function loginCheckAction()
{
}
首先,非常感謝您的回覆。我按照你的說法改變了權限。但是,沒有任何改變。 – Sukhrob 2012-07-24 03:15:43