我在我的网站上用FOSFacebookBundle和FOSUserBundle做订阅时遇到了一些麻烦.
这是我的密码:
base.html.twig:
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<!-- TEMPLATE STUFF -->
function goLogIn(){
alert('enter goLogin function');
window.location = "{{ path('_security_check') }}";
}
function onFbInit() {
alert('enter onFbInit');
if (typeof(FB) != 'undefined' && FB != null ) {
FB.Event.subscribe('auth.statusChange', function(response) {
alert('Status Changed');
if (response.session || response.authResponse) {
setTimeout(goLogIn, 500);
} else {
window.location = "{{ path('_security_logout') }}";
}
});
}
}
{{ facebook_initialize({'xfbml': true, 'fbAsyncInit': 'onFbInit();'}) }}config.yml
fos_user:
db_driver: orm
firewall_name: main
user_class: Modnar\Bundle\UserBundle\Entity\User
fos_facebook:
file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
alias: facebook
app_id: APP_ID // I put my own APP_ID here
secret: APP_SECRET // I put my own APP_SECRET here
cookie: true
permissions: [email, user_birthday, user_location]
services:
my.facebook.user:
class: Modnar\Bundle\UserBundle\Security\User\Provider\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
validator: "@validator"
container: "@service_container"security.yml
# app/config/security.yml
security:
factories:
- "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"
providers:
fos_userbundle:
id: fos_user.user_manager
my_fos_facebook_provider:
id: my.facebook.user
encoders:
FOS\UserBundle\Model\UserInterface: sha512
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
fos_facebook:
app_url: "http://apps.facebook.com/APP_NAME/" // I put my own APP_NAME here
server_url: "http://APP_URL/" // I put my own APP_URL here
login_path: /login
check_path: /login_fb_check
default_target_path: /
provider: my_fos_facebook_provider
logout:
handlers: ["fos_facebook.logout_handler"]
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMINrouting.yml
_security_check:
pattern: /login_fb_check
_security_logout:
pattern: /logout此时,Facebook图标在我的/login页面上,我可以连接到Facebook,但我没有重定向到任何地方。为了获取跟踪,我在js上放置了一些警告,只显示了一个警告:“输入onFbInit”。也许我在某个地方错过了一步,但我找不到。
谢谢!
发布于 2014-04-23 06:04:42
我通过在打开标签后直接放置facebook的javascript代码来解决这个问题。
看看文件上写着什么:
注意,我们需要在初始化Facebook之前包含这段代码,以便正确触发onFbInit()事件侦听器(在本例中,在“body”标记的开头和这个包提供的模板助手之间) 在重定向之前,我们要等500 We才能让浏览器处理Facebook cookie。您可以避免此步骤,但您可能会收到以下错误消息:“无法从会话中检索Facebook用户。”
https://stackoverflow.com/questions/12705558
复制相似问题