2

チュートリアルhttp://m2mdas.github.io/blog/2013/11/21/integrate-hwioauthbundle-with-fosuserbundle/に従って、Github ログインを機能させました。ログインをクリックしたときと同じように機能しているようです。 github ログイン ページにアクセスすると、github ダッシュボードの github アプリケーションに 1 人のユーザーが登録されていることがわかりました。しかし、私は Symfony で認証されていません。下部にある私の symfony ツールバーには、まだ私が匿名ユーザーであると表示されており、さらにテーブル fos_user に新しい行が追加されていません。

Facebook ログインの場合、Facebook のジェネレーター ログイン リンクをクリックすると、「指定された URL はアプリケーション構成で許可されていません。指定された URL の 1 つ以上がアプリの設定で許可されていません。一致する必要があります」というエラーが表示されます。ウェブサイトの URL またはキャンバスの URL、またはドメインはアプリのドメインのいずれかのサブドメインである必要があります。」

私が持っていたもう1つの疑問は、チュートリアルで、routing.ymlに置くように言われていることです、

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

コントローラーまたはリソースが指定されていないため、ここにコントローラーのアクション パスまたはリソースとして何を配置すればよいですか?

config.yml

fos_user: db_driver: orm # その他の有効な値は「mongodb」、「couchdb」、「propel」です。 firewall_name: main user_class: Les\UserBundle\Entity\User registration: Confirmation: enabled: true

hwi_oauth: # このバンドルがアクティブなファイアウォールの名前。この設定を設定する必要があります。登録フォーム: 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

セキュリティ: エンコーダ: FOS\UserBundle\Model\UserInterface: 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 }

ルーティング.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;
           }



       }
4

1 に答える 1

1
  1. エラー:

    「指定された URL は、アプリケーションの構成によって許可されていません。: 1 つ以上の指定された URL が、アプリの設定によって許可されていません。ウェブサイトの URL またはキャンバスの URL と一致する必要があります。または、ドメインがアプリのドメインの 1 つのサブドメインである必要があります。 ."

    Facebook アプリにログインするドメインが、Facebook アプリケーションの [設定] タブで設定したアプリ ドメインと一致しない場合に発生します。

    たとえば、「http://www.yoursite.com」からログインする場合は、「yoursite.com」をアプリケーションのアプリ ドメインとして設定する必要があります。

  2. データベースにユーザーを挿入できないという他の問題については、登録するだけでなく、登録後にユーザーを自動ログインする次のガイドを確認してください。

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

于 2014-09-29T18:57:19.520 に答える