大家好,非常感谢您的帮助,我正在尝试让FOSFacebook工作,但直到现在似乎是不可能的。我尝试了很多配置,并进行了很多修复,但没有任何效果。
这是我的配置:
安全.yml
chain_provider:
chain:
providers: [fos_userbundle, fos_facebook_provider]
fos_userbundle:
id: fos_user.user_provider.username
fos_facebook_provider:
id: fos.facebook.custom_provider
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
public:
pattern: ^/
fos_facebook:
app_url: "http://apps.facebook.com/myApp/"
server_url: "http://www.mywebsite.com"
login_path: /facebook/login
check_path: /facebook/check
default_target_path: /
provider: fos_facebook_provider
anonymous: false
logout:
handlers: ["fos_facebook.logout_handler"]
配置.yml
fos.facebook.custom_provider:
class: BundlesUserBundleSecurityUserProviderFacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
validator: "@validator"
container: "@service_container"
fos_facebook:
file: %kernel.root_dir%/../vendor/facebook/php-sdk/src/base_facebook.php
alias: facebook
app_id: myid
secret: mysecret
cookie: true
permissions: [email]
路由.yml
_security_check:
pattern: /facebook/check
_security_logout:
pattern: /logout
树枝模板
<script type="text/javascript">
function goLogIn(){
window.location.href = "{{ path('_security_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') }}";
}
});
}
}
</script>
{{ facebook_initialize({'xfbml': true, 'fbAsyncInit': 'onFbInit();'}) }}
用户控制器.php
* @Route("/facebook/check")
*/
public function loginCheckFacebookAction(){
}
以及提供程序和对 User 类的修改(如自述文件中所示)。
但问题是该服务似乎没有被调用。实际上,用户控制器中的方法必须是虚拟方法,这里不是这样的。该方法被调用,当然我得到这个错误:
逻辑异常:控制器必须返回响应(给定空值)。您是否忘记在控制器中的某处添加返回语句?(未捕获的例外)。
我的错误是什么?
删除用户控制器路由/操作loginCheckFacebookAction