HWIOauthBundle: создание пользовательского владельца ресурса

Я следовал этому принципу https://gist.github.com/danvbe/4476697, чтобы получить HWIOauthBundle для работать на моем сайте, и теперь я могу нормально войти в систему через учетную запись LinkedIn и сохранить пользователя в своей локальной базе данных, так что я очень доволен этим. Однако мой следующий шаг — получить дополнительную информацию о пользователе через LinkedIn API, и пока у меня есть только поля имени пользователя и форматированного имени.

Я просмотрел код, интересный фрагмент кода находится в OAuth/ResourceOwner/LinkedinResourceOwner.php:

protected $options = array(
    'authorization_url'   => 'https://www.linkedin.com/uas/oauth/authenticate',
    'request_token_url'   => 'https://api.linkedin.com/uas/oauth/requestToken',
    'access_token_url'    => 'https://api.linkedin.com/uas/oauth/accessToken',
    'infos_url'           => 'http://api.linkedin.com/v1/people/~:(id,formatted-name)',
    'realm'               => 'http://api.linkedin.com',
);

Поэтому я подумал, что мне нужно только перезаписать этот ResourceOwner и изменить строку

'infos_url'           => 'http://api.linkedin.com/v1/people/~:(id,formatted-name)',

путем добавления других полей. Моя идея состояла в том, чтобы создать класс MylinkedinResourceOwner, который расширяет исходный класс LinkedinResourceOwner. Так я и сделал, добавив в свой services.yml следующие строки:

hwi_oauth.resource_owner.mylinkedin.class:  Acme\UserBundle\OAuth\ResourceOwner\MylinkedinResourceOwner
hwi_oauth.abstract_resource_owner.mylinkedin:
    class: "%hwi_oauth.resource_owner.mylinkedin.class%"
    parent: hwi_oauth.abstract_resource_owner.oauth2

и, конечно же, изменено в config.yml:

hwi_oauth:
    resource_owners:
        linkedin:
            type:               mylinkedin
            client_id:          ***
            client_secret:      ***
            scope:              r_fullprofile

Но, к сожалению, у меня есть следующая ошибка

InvalidConfigurationException: Invalid configuration for path "hwi_oauth.resource_owners.linkedin.type": Unknown resource owner type "mylinkedin".

Итак, мой вопрос: правильно ли я делаю, чтобы получить дополнительную информацию об учетной записи LinkedIn? Если да, то как я могу решить эту ошибку?

Спасибо !


person jeanpaul62    schedule 12.05.2013    source источник


Ответы (3)


Просто примечание для тех, кто наткнется на это:

Это должен быть https, и убедитесь, что это json, если это то, что вы ожидаете:

infos_url:      "https://api.linkedin.com/v1/people/~:(id,first-name,last-name,formatted-name,email-address)?format=json"
person Juan Treminio    schedule 29.08.2013

Я наконец нашел это, на самом деле это намного проще, чем то, что я сделал. Единственное, что мне нужно было сделать, это добавить свойство infos_url в config.yml следующим образом:

hwi_oauth:
    resource_owners:
        linkedin:
            type:               mylinkedin
            client_id:          ***
            client_secret:      ***
            scope:              r_fullprofile
            infos_url:          http://api.linkedin.com/v1/people/~:(id,first-name,last-name)

Так что никакого пользовательского ResourceOwner вообще нет.

person jeanpaul62    schedule 14.05.2013

Чтобы получить связанный адрес электронной почты и URL-адрес изображения профиля для HWIOauthBundle, я использовал эту конфигурацию.

....
resource_owners:
    linkedin:
        type:                linkedin
        client_id:           ***
        client_secret:       ***
        infos_url:           http://api.linkedin.com/v1/people/~:(id,formatted-name,email-address,picture-url)
        scope:               "r_basicprofile,r_emailaddress"
        paths:
            email:           emailAddress
            profilepicture:  pictureUrl    
person mirk    schedule 13.07.2013