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

我一直遇到同样的问题:

No ressource owner with name 'check-google'.

对我来说,它是通过将 routing.yml 更改为这样来解决的:

google_login:
    pattern: /api/login/check/google
于 2014-10-10T17:06:41.350 回答
1

我最好的选择是您的防火墙在“使用 * 登录”URL 时未激活

尝试改变:

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 }
于 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 回答