ruby on rails-如何使用OAuth获取LinkedIn个人资料图片



多亏了OAuth,用户可以使用他们的LinkedIn帐户登录我的Rails应用程序。但是,我在显示用户的配置文件图像时遇到问题。以下URL未加载图片:

<%= image_tag("http://api.linkedin.com/v1/people/{user-id}/picture-url") %>

如何让用户的LinkedIn个人资料图像显示在我的Rails应用程序中?

谢谢!

尝试使用获取原始图片

http://api.linkedin.com/v1/people/{user-id}/picture-urls::(original)

更新:

来自当前文档(建议阅读(:

使用当前用户(用户登录后(:

http://api.linkedin.com/v1/people/~:(picture-url)

使用member_id:

http://api.linkedin.com/v1/people/id=12345:(picture-url)

公众简介:

http://api.linkedin.com/v1/people/url=<public-profile-url>:(picture-url)

这些URL返回xml,因此可以解析xml响应以获得picture-url字符串,并将其用作image_tag的参数。或者,您可以以json的形式检索信息,传递一个额外的参数,如:

http://api.linkedin.com/v1/people/~:(picture-url)?format=json

在这两种情况下(xmljson(,都需要从api响应中提取picture-url,以便将其传递给image_tag

这个宝石omniauth-linkedin-oauth2可能会对你有所帮助。

这是我的完美解决方案:

def callback(self):
    self.validate_oauth2callback()
    oauth_session = self.service.get_auth_session(
        data={'code': request.args['code'],
              'grant_type': 'authorization_code',
              'redirect_uri': self.get_callback_url()},
        decoder=jsondecoder
    )
    me = oauth_session.get('people/~:(id,first-name,last-name,public-profile-url,email-address,picture-url,picture-urls::(original))?format=json&oauth2_access_token='+str(oauth_session.access_token), data={'x-li-format': 'json'}, bearer_auth=False).json()
    social_id = 'linkedin$' + me['id']
    name = me['firstName']
    surname = me['lastName']
    email = me['emailAddress']
    url = me['publicProfileUrl']
    image_small = me.get('pictureUrl', None)
    image_large = me.get('pictureUrls', {}).get('values', [])[0]
    return social_id, name, surname, email, url, image_small, image_large, me

相关内容

  • 没有找到相关文章