1

我按照这个要点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)',

通过添加其他字段。我的想法是创建一个扩展原始 LinkedinResourceOwner 类的 MylinkedinResourceOwner 类。这就是我所做的,我在我的 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 帐户的其他信息?如果是这样,我该如何解决这个错误?

谢谢 !

4

3 回答 3

1

只是给偶然发现此问题的人的注释:

它必须是 https,如果这是您所期望的,请确保它是 json:

infos_url:      "https://api.linkedin.com/v1/people/~:(id,first-name,last-name,formatted-name,email-address)?format=json"
于 2013-08-29T06:14:24.720 回答
0

I finally found it, actually it's much simpler than what I did. The only thing I needed to do was to add a infos_url property in config.yml like this:

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)

So no custom ResourceOwner at all.

于 2013-05-14T21:01:07.287 回答
0

为了获得 HWIOauthBundle 的linkedin 电子邮件和个人资料图片 url,我使用了这个配置。

....
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    
于 2013-07-13T20:54:06.300 回答