1

HWIOAuthBundle をインストールしました。

しかし、Google アカウントでログインしようとすると、次のエラーが表示されます。

「check-google」という名前のリソース所有者はいません。

そして、他のAPI(Facebook、twitter ...)でも同じ種類のエラーが発生しました

これは私の security.yml です:

firewalls:
    main:
        pattern:  ^/login$
        security: true
        anonymous: true
        provider: user_provider
        form_login:
            login_path: fos_user_security_login
            check_path: fos_user_security_check
        logout:
            path:   fos_user_security_logout
            target: /
        oauth:
            resource_owners:
                facebook:           "/login/check-facebook"
                google:             "/login/check-google"
                twitter:            "/login/check-twitter"
                linkedin:           "/login/check-linkedin"
            login_path:        /login
            check_path:        /login
            failure_path:      /login

            oauth_user_provider:
                #this is my custom user provider, created from FOSUBUserProvider - will manage the
                #automatic user registration on your site, with data from the provider (facebook. google, etc.)
                service: my_user_provider

私の routing.yml :

#HWIOAuthBundle routes
    hwi_oauth_security:
    resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
    prefix: /connect/by

hwi_oauth_connect:
    resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
    prefix: /connect/by

hwi_oauth_redirect:
    resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
    prefix:   /login

facebook_login:
    pattern: /login/check-facebook
    options: { i18n: false }

google_login:
    pattern: /login/check-google
    options: { i18n: false }

twitter_login:
    pattern: /login/check-twitter

linkedin_login:
    pattern: /login/check-linkedin

と私の config.yml :

# HWIOAuthBundle
hwi_oauth:
    connect:
        account_connector: my_user_provider
    firewall_name: main
    fosub:
        username_iterations: 30
        properties:
            # these properties will be used/redefined later in the custom FOSUBUserProvider service.
            facebook: facebook_id
            google: google_id
            twitter: twitter_id
            linkedin: linkedin_id
    resource_owners:
        facebook:
            type:                facebook
            client_id:           xxxxx
            client_secret:       xxxxx
            scope:               ""
            options:
                display: popup
        google:
            type:                google
            client_id:           xxxx
            client_secret:       xxxx
            scope:               "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
        twitter:
            type:                twitter
            client_id:           xxxx
            client_secret:       xxxx
            scope:               ""
        linkedin:
            type:                linkedin
            client_id:           xxxx
            client_secret:       xxxx
            scope:               "r_basicprofile"

services:
    hwi_oauth.user.provider.entity:
        class: HWI\Bundle\OAuthBundle\Security\Core\User\OAuthUserProvider
    cmf_create.persistence.orm.object_mapper:
        class: Midgard\CreatePHP\Mapper\DoctrineOrmMapper
        arguments:
            - "%cmf_create.map%"
            - "@doctrine"

私の問題はNo resource owner with name 'google' (HWIOAuthBundle & FOSUserBundle integration) と同じです。どうすればこれを修正できますか?

4

3 に答える 3

1

私の最善の策は、「*でログイン」URLでファイアウォールがアクティブになっていないことです

変更してみてください:

pattern:  ^/login$

私は個人的にすべての URL に対してファイアウォールを使用しています。

pattern: ^/

公開 URL を明示的に設定します。

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: ^/add, role: ROLE_USER }
于 2014-08-30T18:22:12.020 に答える
0

この問題を解決しました。このリンクは役に立ちました:

http://m2mdas.github.io/blog/2013/11/21/integrate-hwioauthbundle-with-fosuserbundle/

上記のリンクで、パスに cacert.pem を追加した後、問題が解決しました。

HWIOAuthBundle は、Buzz curl クライアントを使用して Web サービスと通信します。Buzz はデフォルトで SSL 証明書チェックを有効にします。一部のサーバーでは、CA 証明書情報が存在しない場合があります。CA 証明書情報を追加するには、このページから cacert.pem をダウンロードし、curl.cainfo php ini 変数を cacert.pem の場所に設定します (例: curl.cainfo = /path/to/cacert.pem)。

そして、私は上記のステップを逃しました。

よろしく、

Mk6ix

于 2014-10-14T15:15:51.250 に答える