2014-08-29 1 views
1

Я установил HWIOAuthBundle.HWIOAuthBundle: Нет владельца ресурса с именем 'check-google'

Но я эту ошибку, когда я пытаюсь войти в систему с аккаунтом Google:

Нет владелец Ressource с именем «чек-Google».

И у меня такой же errror с другими 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). Как я могу это исправить ?

+0

Что URL бросает исключение? Можете ли вы опубликовать немного больше из вашего stacktrace? –

ответ

0

Я решил этот вопрос. Я нашел эту ссылку ПОЛЕЗНЫЕ:

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

В приведенной выше ссылке, после того как я добавил cacert.pem на пути, она решена.

HWIOAuthBundle использует Buzz curl client для связи с веб-службами. Buzz по умолчанию включает проверку сертификата SSL. Информация о некоторых сертификатах CA сертификата может отсутствовать. Чтобы добавить сертификат CA Информация скачать cacert.pem с этой страницы и установить curl.cainfo PHP ини переменной к месту cacert.pem например curl.cainfo = /path/to/cacert.pem

и я пропустил выше шаг.

С уважением,

Mk6ix

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

я бегу в том же номере:

No ressource owner with name 'check-google'. 

Для меня она была решена путем изменения routing.yml к этому:

google_login: 
    pattern: /api/login/check/google