1
votes

I'm trying to merge FOSFacebookBundle and FOSUserBundle. FosUserBundle alone is working perfectly but when i trying integrate facebookbundle with him im getting route error.I'm using Symfony 2.3.4

Cannot import resource "@FOSFacebookBundle/Resources/config/routing.xml" from "C:/xampp/htdocs/Symfonia/app/config\routing.yml". Make sure the "FOSFacebookBundle/Resources/config/routing.xml" bundle is correctly registered and loaded in the application kernel class.

I have 4 spacebar in every place of routing.yml. Ofcourse I implemented it in AppKernel.php

My routing.yml:

fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

fos_user_profile:
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
    prefix: /profile

fos_user_register:
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
    prefix: /register

fos_user_resetting:
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
    prefix: /resetting

fos_user_change_password:
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
    prefix: /profile
_welcome:
    pattern:  /
    defaults: { _controller: AcmeUserBundle:Welcome:index }

_security_check:
    pattern:  /login_fb_check
_security_logout:
    pattern:  /logout
fos_facebook_channel:
    resource: "@FOSFacebookBundle/Resources/config/routing.xml"

Config.yml

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
services:
    my.facebook.user:
        class: Acme\UserBundle\Security\User\Provider\FacebookProvider
        arguments:
            facebook: "@fos_facebook.api"
            userManager: "@fos_user.user_manager"
            validator: "@validator"
framework:
    #esi:             ~
    translator:      { fallback: %locale% }
    secret:          %secret%
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form:            ~
    csrf_protection: ~
    validation:      { enable_annotations: true }
    templating:
        engines: ['twig']
        #assets_version: SomeVersionScheme
    default_locale:  "%locale%"
    trusted_proxies: ~
    session:         ~
    fragments:       ~
    http_method_override: true

# Twig Configuration
twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%

# Assetic Configuration
assetic:
    debug:          %kernel.debug%
    use_controller: false
    bundles:        [ ]
    #java: /usr/bin/java
    filters:
        cssrewrite: ~
        #closure:
        #    jar: %kernel.root_dir%/Resources/java/compiler.jar
        #yui_css:
        #    jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar

# Doctrine Configuration
doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8
        # if using pdo_sqlite as your database driver, add the path in parameters.yml
        # e.g. database_path: %kernel.root_dir%/data/data.db3
        # path:     %database_path%

    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true


# Swiftmailer Configuration
swiftmailer:
    transport: %mailer_transport%
    host:      %mailer_host%
    username:  %mailer_user%
    password:  %mailer_password%
    spool:     { type: memory }

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Acme\UserBundle\Entity\User
fos_facebook:
  alias:  facebook
  app_id: 123456879
  secret: s3cr3t
  cookie: true
  permissions: [email, user_birthday, user_location]

and my security.yml

security:
    providers:
        chain_provider:
            chain:
                providers: [fos_user_bundle, my_fos_facebook_provider]
        fos_user_bundle:
            id: fos_user.user_provider.username
        my_fos_facebook_provider:
            id: my.facebook.user   
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: chain_provider
                csrf_provider: form.csrf_provider
            fos_facebook:
                app_url: "http://apps.facebook.com/appName/"
                server_url: "http://localhost/facebookApp/"
                login_path: /login
                check_path: /login_fb_check
                default_target_path: /
                provider: chain_provider  
            logout: true              
            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 }
        - { path: ^/facebook/,           role: [ROLE_FACEBOOK] }
        - { path: ^/.*,                  role: [IS_AUTHENTICATED_ANONYMOUSLY] }


    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

Thanks for any help !

3

3 Answers

2
votes

I had the same problem, solved just now.

It seems that the routing.xml file is not downloaded, search for it in the folder \vendor\friendsofsymfony\facebook-bundle\FOS\FacebookBundle\Resources\config of your app.

If is not here, then simply download it and copy it from the repository "https://github.com/FriendsOfSymfony/FOSFacebookBundle/blob/master/Resources/config/routing.xml"

routing.xml as below:

<?xml version="1.0" encoding="UTF-8" ?>

<routes xmlns="http://symfony.com/schema/routing"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">

    <route id="fos_facebook_channel" pattern="/channel.html">
        <default key="_controller">FOSFacebookBundle:Facebook:channel</default>
        <requirement key="_method">GET</requirement>
    </route>

</routes>
1
votes

It seems that the latest stable release of the bundle matching version 1.2.* does not include the routing file, so if you are using composer and the minimum stability is set to "stable" (as it is by default) then just reference the bundle allowing the dev stability like this:

require {
    ...,
    "friendsofsymfony/facebook-bundle": "1.2.*@dev"
}

then just update the bundle using composer:

php composer update friendsofsymfony/facebook-bundle

This way the problem will not be replicated to other developers working on the same project when they clone the repo and install verdors via composer in their own locar working directory.

-1
votes

just go through this link and check the routing and config file's
FOSFacebookBundle and FOSUserBundle
and for more description
https://github.com/FriendsOfSymfony/FOSFacebookBundle/tree/2.0#include-the-login-button-in-your-templates

and make sure with that
Add this bundle to your application's kernel:

 // app/ApplicationKernel.php
  public function registerBundles()
  {
      return array(
          // ...
          new FOS\FacebookBundle\FOSFacebookBundle(),
          // ...
      );
  }