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

时间:2014-08-29 15:11:47

标签: facebook symfony google-api hwioauthbundle

我安装了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 个答案:

答案 0 :(得分:1)

我最好的选择是您的防火墙在“使用*”网址

时无效

尝试改变:

pattern:  ^/login$

我个人对所有网址都使用防火墙:

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 :(得分:1)

我遇到了同样的问题:

No ressource owner with name 'check-google'.

对我而言,它是通过将routing.yml更改为:

来解决的
google_login:
    pattern: /api/login/check/google

答案 2 :(得分: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