facebook和github登录HWIOAuthBundle和FOSUserBundle在Symfony2.1


facebook and github login HWIOAuthBundle and FOSUserBundle in Symfony2.1

我已经按照教程http://m2mdas.github.io/blog/2013/11/21/integrate-hwioauthbundle-with-fosuserbundle/使Github登录工作,它几乎似乎是工作,当我点击登录我登陆在Github登录页面,我可以看到1用户注册在我的Github应用程序在Github仪表板。但我没有在Symfony认证。在我的symfony工具栏底部,它仍然说,我是一个匿名用户,加上一个新的行没有添加到我的表fos_user。

对于facebook登录,当我点击facebook的生成器登录链接时,它给了我错误"给定的URL是不允许的应用程序配置。:一个或多个给定的url是不允许的应用程序的设置。它必须与网站URL或Canvas URL匹配,或者该域必须是应用程序的一个域的子域。"

另一个疑问是,在教程中,在路由。Yml里面写的是

            hwi_github_login:
                pattern: /secure_area/login/check-github

由于没有指定控制器或资源,我应该在这里放置什么作为控制器动作路径或资源?

config.yml

fos_user:Db_driver: orm #其他有效值是'mongodb', 'couchdb'和'propel'firewall_name:主要user_class: Les ' UserBundle ' '用户实体注册:确认:启用:真正的

hwi_oauth:#该bundle所在的防火墙名称,必须设置此设置firewall_name: secure_area连接:确认:真# account_connector: hwi_oauth.user.provider.fosub_bridge# registration_form_handler: hwi_oauth.registration.form.handler.fosub_bridge# registration_form: fos_user.registration.form

resource_owners:
    github:
        type:                github
        client_id:           b625ec98906cc26ad4f1
        client_secret:       a3505d93ab1fc6c5a7fa2805c0723bbfddf556a7
        scope:               "user:email"
    facebook:
        type:                facebook
        client_id:           331922526960400
        client_secret:       9dc32a145a1c6b0b7f5e57a34d174011
fosub:
    # try 30 times to check if a username is available (foo, foo1, foo2 etc)
    username_iterations: 30
    # mapping between resource owners (see below) and properties
    properties:
        github: githubID
        facebook: fbID

security.yml

安全:编码器:安全系数' UserBundle ' '用户界面模型:sha512

role_hierarchy:
    ROLE_CLIENT:      ROLE_USER
    ROLE_RESTO:       ROLE_CLIENT
    ROLE_ADMIN:       [ ROLE_USER, ROLE_CLIENT, ROLE_RESTO ]
    ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
    fos_userbundle:
        id: fos_user.user_provider.username
firewalls:
    main:
                pattern: ^/
                form_login:
                    provider: fos_userbundle
                    csrf_provider: form.csrf_provider
                logout:       true
                anonymous:    true
    secure_area:
                pattern: ^/secure_area
                oauth:
                        failure_path: /secure_area/connect
                        login_path: /secure_area/connect
                        check_path: /secure_area/connect
                        provider: fos_userbundle
                        resource_owners:
                              github:           "/secure_area/login/check-github"
                              facebook:         "/secure_area/login/check-facebook"
                        oauth_user_provider:
                              service: hwi_oauth.user.provider.fosub_bridge
                anonymous:    true
                logout:
                         path:           /secure_area/logout
                         target:         / #where to go after logout

access_control:
     - { path: ^/booking, role: ROLE_CLIENT }
     - { path: ^/party_calendar, role: ROLE_CLIENT }
     - { path: ^/restaurant_admin, role: ROLE_RESTO }
     - { path: ^/secure_area/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
     - { path: ^/secure_area/connect, role: IS_AUTHENTICATED_ANONYMOUSLY }
     - { path: ^/secure_area, role: ROLE_USER }

routing.yml

       fos_user_security:
           resource: "@FOSUserBundle/Resources/config/routing/security.xml"
           prefix: /login
       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

       hwi_oauth_redirect:
           resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
           prefix:   /secure_area/connect
       hwi_oauth_login:
           resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
           prefix:   /secure_area/connect
       hwi_oauth_connect:
           resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
           prefix:   /secure_area/connect
       hwi_github_login:
           pattern: /secure_area/login/check-github
           defaults: { _controller: LesCouvertsBundle:Couverts:index }

       hwi_facebook_login:
           pattern: /secure_area/login/check-facebook
           defaults: { _controller: LesCouvertsBundle:Couverts:index }
       hwi_google_login:
           pattern: /secure_area/login/check-google
           defaults: { _controller: LesCouvertsBundle:Couverts:index }

实体/user.php

       /**
        * @ORM'Entity
        * @ORM'Table(name="fos_user")
        */
       class User extends BaseUser{
           /**
            * @ORM'Id
            * @ORM'Column(type="integer")
            * @ORM'GeneratedValue(strategy="AUTO")
            */
           protected $id;
           /**
            * @var string
            *
            * @ORM'Column(name="githubId", type="string", nullable=true)
            */
           private $githubID;

           /**
            * @var string
            *
            * @ORM'Column(name="githubId", type="string", nullable=true)
            */
           private $fbID;

           public function __construct()
           {
               parent::__construct();
               // your own logic
           }
           /**
            * Get id
            *
            * @return integer 
            */
           public function getId()
           {
               return $this->id;
           }
           /**
            * @param string $githubID
            */
           public function setGithubID($githubID)
           {
               $this->githubID = $githubID;
           }
           /**
            * @return string
            */
           public function getGithubID()
           {
               return $this->githubID;
           }
           /**
            * @param string $fbID
            */
           public function setFbID($fbID)
           {
               $this->fbID = $fbID;
           }
           /**
            * @return string
            */
           public function getFbID()
           {
               return $this->fbID;
           }

       }
  1. 错误:

    "应用程序配置不允许给定URL。:一个或应用程序的设置不允许更多的给定url。它必须匹配网站URL或画布URL,或者域名必须是子域名一个应用程序的域。"

    当您登录Facebook应用程序的域名与您在"设置"选项卡上设置的应用程序域不匹配你的Facebook应用程序

    例如,如果您从"http:/www.yoursite.com"登录,您需要

  2. 将"yoursite.com"设置为应用程序的应用域。
  3. 至于其他问题,你有,不能插入用户在数据库中,请查看以下指南,其中没有只注册,但也自动登录用户注册后:

    https://gist.github.com/danvbe/4476697