首页 文章

HWIOAuthBundle:没有名称为'check-google'的资源所有者

提问于
浏览
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)相同 . 我怎样才能解决这个问题 ?

3 回答

  • 1

    我最好的选择是你的防火墙在“使用*”登录时没有激活

    尝试改变:

    pattern:  ^/login$
    

    我个人使用防火墙到所有URL:

    pattern: ^/
    

    并明确设置公共网址:

    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 }
    
  • 1

    我一直在遇到同样的问题:

    No ressource owner with name 'check-google'.
    

    对我来说,通过将routing.yml更改为:

    google_login:
        pattern: /api/login/check/google
    
  • 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

相关问题