Попытка внедрить параметры в пользовательский OAuthUserProvider

Я последовал примеру здесь, чтобы добавить HWIOAuthBundle после борьбы с документацией. Я отлично перенаправляюсь в Google, но когда он возвращается, я получаю предупреждение о том, что первый параметр отсутствует.

config.yml

services:
    wxexchange_oauth_user_provider:
        class:      WX\ExchangeBundle\Service\OAuthUserProvider
        arguments:  [@session, @doctrine, @service_container]
hwi_oauth:
    resource_owners:
        google:
            type:                google
            client_id:           xxxxxx
            client_secret:       xxxxx
            scope:               "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
       user_response_class: \WX\ExchangeBundle\Service\OAuthUserProvider
    firewall_name:               main

безопасность.yml

providers:
    my_custom_hwi_provider:
        id: wxexchange_oauth_user_provider 

firewalls:
    main:
        pattern: ^/
        anonymous: ~
        provider: main
        form_login:
            check_path: login_check
            login_path: /Login
            csrf_provider: form.csrf_provider
        logout:
            path: logout
        oauth:
            resource_owners:
                facebook:           "/Login/OAuth/check-facebook"
                google:             "/Login/OAuth/check-google"
            login_path:        /Login/OAuth
            use_forward:       false
            failure_path:      /Login
            oauth_user_provider:
                service: wxexchange_oauth_user_provider

маршрутизация.yml

hwi_oauth_login:
    resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
    prefix:   /Login/OAuth

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

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

google_login:
    pattern: /Login/OAuth/check-google

facebook_login:
    pattern: /Login/OAuth/check-facebook

OAuthUserProvider.php

class OAuthUserProvider extends BaseOAuthUserProvider
{
    protected $session, $doctrine, $admins;
    public function __construct($session, $doctrine, $service_container)
    {
        $this->session = $session;
        $this->doctrine = $doctrine;
        $this->container = $service_container;
    }
    public function loadUserByUsername($username)
    {
        //code
    }
    public function loadUserByOAuthUserResponse(UserResponseInterface $response)
    {
        //code
    }
}

Ошибка:

Предупреждение: отсутствует аргумент 1 для WX\ExchangeBundle\Service\OAuthUserProvider::__construct(), вызываемый в /opt/lampp/htdocs/workoutexchange/trunk/WorkoutExchange/vendor/hwi/oauth-bundle/HWI/Bundle/OAuthBundle/OAuth/ ResourceOwner/AbstractResourceOwner.php в строке 186 и определено в /opt/lampp/htdocs/workoutexchange/trunk/WorkoutExchange/src/WX/ExchangeBundle/Service/OAuthUserProvider.php в строке 13


person John the Ripper    schedule 31.05.2014    source источник
comment
arguments: [[@session, @doctrine, @service_container]... в коде вопроса есть две открывающие скобки [[. Отражает ли это вашу реальную конфигурацию или это ошибка копирования/вставки?   -  person Nicolai Fröhlich    schedule 01.06.2014
comment
Ошибка копирования и вставки... Хотел бы я, чтобы это было так просто.   -  person John the Ripper    schedule 01.06.2014


Ответы (2)


Эта строка в разделе services: в config.yml неверна:

    user_response_class: \WX\ExchangeBundle\Service\OAuthUserProvider

См. здесь< /а>. Я не уверен, что это должно быть (Google Oauth example не упоминает об этом), но я думаю, что это должен быть простой объект-значение, а не ваш пользовательский провайдер.

person shirshir    schedule 11.06.2014

Я долго боролся с этой ошибкой.

providers:
--->>>my_custom_hwi_provider:
---->>>>>>> id: wxexchange_oauth_user_provider

Прокомментируйте эти две строки. Вы объявляете службу в разделе брандмауэра. Вам не нужно объявлять его поставщиком.

После этого ваша проблема будет решена...

firewalls:
........
        oauth:
            resource_owners:
                facebook:           "/Login/OAuth/check-facebook"
                google:             "/Login/OAuth/check-google"
            login_path:        /Login/OAuth
            use_forward:       false
            failure_path:      /Login
            oauth_user_provider:
                service: wxexchange_oauth_user_provider
person georgeok    schedule 05.02.2015