多亏了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
在这两种情况下(xml
或json
(,都需要从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