获取 LinkedIn 个人资料图片

问题描述 投票:0回答:12

有没有一种简单的方法来获取用户的 LinkedIn 个人资料照片?

理想情况下与 Facebook 类似 - http://graph.facebook.com/userid/picture

linkedin-api profile-picture
12个回答
52
投票

您可以通过此调用检索原始照片尺寸:

http://api.linkedin.com/v1/people/~/picture-urls::(原创)

请注意,这可以是任何尺寸,因此您需要自行缩放,但图像是用户上传的原始图像。


35
投票

没那么容易...您需要通过OAuth,然后代表会员要求:

http://api.linkedin.com/v1/people/{user-id}/picture-url


20
投票

如果您使用 2.0 版本的 API(所有开发人员都需要在 2019 年 3 月 1 日之前迁移),您应该使用投影来扩展 profilePicture.displayImage

。如果这样做,您将在 
displayImage~
 中拥有完整的 JSON 元素 
profilePicture
(“~”不是拼写错误),其中包含您可能需要的所有信息。 

https://api.linkedin.com/v2/me?projection=(id,profilePicture(displayImage~:playableStreams))



您可以在

个人资料图片 API 文档中查看更多信息,以查看 JSON 响应或个人资料 API 文档


12
投票
使用 OAuth 2.x 完成 Linkedin

用户身份验证后,向人员 URL 发出请求。

https://api.linkedin.com/v1/people/~:(id、电子邮件地址、名字、姓氏、格式化名称、图片网址)?format=json

其中

~

 代表当前经过身份验证的用户。响应将是这样的......

{ "id": "KPxRFxLxuX", "emailAddress": "[email protected]", "firstName": "John", "lastName": "Doe", "formattedName": "John Doe", "pictureUrl": "https://media.licdn.com/mpr/mprx/0_0QblxThAqcTCt8rrncxxO5JAr...cjSsn6gRQ2b" }

希望这有帮助!


6
投票
我在我的解决方案中使用 OWIN,因此在用户允许您的应用程序使用 LinkedIn 凭据后,对 URL 进行简单明了的 GET 请求

https://api.linkedin.com/v1/people/~:(picture-URL) ?format=json,如之前所解释的,在请求标头中使用承载授权,解决了我的问题。

我的Startup.Auth.cs文件

var linkedInOptions = new LinkedInAuthenticationOptions() { ClientId = [ClientID], ClientSecret = [ClientSecret], Provider = new LinkedInAuthenticationProvider() { OnAuthenticated = (context) => { // This is the access token received by your application after user allows use LinkedIn credentials context.Identity.AddClaim(new Claim( "urn:linkedin:accesstoken", context.AccessToken)); context.Identity.AddClaim(new Claim( "urn:linkedin:name", context.Name)); context.Identity.AddClaim(new Claim( "urn:linkedin:username", context.UserName)); context.Identity.AddClaim(new Claim( "urn:linkedin:email", context.Email)); context.Identity.AddClaim(new Claim( "urn:linkedin:id", context.Id)); return Task.FromResult(0); } } }; app.UseLinkedInAuthentication(linkedInOptions);

我在LinkedIn中获取用户个人资料图片的方法:

public string GetUserPhotoUrl(string accessToken) { string result = string.Empty; var apiRequestUri = new Uri("https://api.linkedin.com/v1/people/~:(picture-url)?format=json"); using (var webClient = new WebClient()) { webClient.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + accessToken); var json = webClient.DownloadString(apiRequestUri); dynamic x = JsonConvert.DeserializeObject(json); string userPicture = x.pictureUrl; result = userPicture; } return result; }

最后是我使用上述方法的操作片段:

public async Task<ActionResult> ExternalLoginCallback(string returnUrl) { ... var externalIdentity = HttpContext.GetOwinContext().Authentication.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie); string accessToken = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:accesstoken").Value; model.PhotoUrl = GetUserPhotoUrl(accessToken); ... }

我希望它能有所帮助。 最好的问候


4
投票
这对我来说很有效!

已解释 -

这是包含所有其他数据的缩略图-

https://api.linkedin.com/v1/people/~:(id,location,picture-urls::(original),specialties,public-profile-url,email-address,formatted-name)?format=json

这适用于包含所有其他数据的原始图像 -

https://api.linkedin.com/v1/people/~:(id,location,picture-url,specialties,public-profile-url,email-address,formatted-name)?format=json

只需使用

picture-urls::(original)

代替
picture-url

目前正在

Gradbee 使用


2
投票
当您登录linkedin时,您将获得accesstoken。使用该访问令牌,您可以检索用户数据

LinkedInApiClient client = factory.createLinkedInApiClient(accessToken); com.google.code.linkedinapi.schema.Person person = client.getProfileForCurrentUser(EnumSet.of( ProfileField.ID, ProfileField.FIRST_NAME, ProfileField.LAST_NAME, ProfileField.HEADLINE, ProfileField.INDUSTRY, ProfileField.PICTURE_URL, ProfileField.DATE_OF_BIRTH, ProfileField.LOCATION_NAME, ProfileField.MAIN_ADDRESS, ProfileField.LOCATION_COUNTRY)); String imgageUrl=person.getPictureUrl();
    

1
投票
如果您的目标只是在网站上显示照片,那么 LinkedIn

会员资料插件 可能适合您。它将显示照片、一些附加信息以及 LinkedIn 品牌。

由于 LinkedIn API 设计为仅代表“当前登录用户”使用,因此它不提供与 facebook 图形 API 类似的功能。

这是我的解决方案,效果非常好:

1
投票
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 = 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

这可能不完全是您所要求的,但它对于个人调查很有用。

0
投票
在 Firefox 中调出该页面,左键单击背景图像上的菜单。 选择检查元素(Q)。

搜索-目标图像” 这将是 img 元素中 id 属性的结尾。 该 img 元素的 src 属性将是背景图像的 URL。

对我来说这很有效

0
投票
image= auth.extra.raw_info.pictureUrls.values.last.first

与omniauth-linkedin gem
    

您只需执行以下定义的步骤即可获取用户个人资料图片。

0
投票

链接网址

https://api.linkedin.com/v2/people/id=USER_ID?projection=(id,profilePicture(displayImage~digitalmediaAsset:playableStreams)) USER_ID

: yjuMzBoycX // 测试用户ID。

调用此API来获取所提供的userId的头像,

您将得到如下响应,在响应中,ProfilePicute -> elements ->identifiers ->identifier 是您的用户个人资料图片的链接,只需单击该链接即可访问。

示例响应

。 // 测试用户个人资料图片。 您将在元素数组中得到四张不同分辨率的图片。

{ "profilePicture": { "displayImage": "urn:li:digitalmediaAsset:C4D03AQEJkSP2gLg1aA", "displayImage~": { "paging": { "count": 10, "start": 0, "links": [] }, "elements": [ { "artifact": "urn:li:digitalmediaMediaArtifact:(urn:li:digitalmediaAsset:C4D03AQEJkSP2gLg1aA,urn:li:digitalmediaMediaArtifactClass:profile-displayphoto-shrink_100_100)", "authorizationMethod": "PUBLIC", "data": { "com.linkedin.digitalmedia.mediaartifact.StillImage": { "orientation": "TopLeft", "storageAspectRatio": { "widthAspect": 1.0, "heightAspect": 1.0, "formatted": "1.00:1.00" }, "storageSize": { "width": 100, "height": 100 }, "rawMetadataTags": [], "scale": "DOWN", "mediaType": "image/jpeg", "rawCodecSpec": { "name": "jpeg", "type": "image" }, "displaySize": { "width": 100.0, "uom": "PX", "height": 100.0 }, "displayAspectRatio": { "widthAspect": 1.0, "heightAspect": 1.0, "formatted": "1.00:1.00" } } }, "identifiers": [ { "identifier": "https://media.licdn.com/dms/image/C4D03AQEJkSP2gLg1aA/profile-displayphoto-shrink_100_100/0/1661232745172?e=1712188800&v=beta&t=bEUF4w6ndy7kaRDbq1Lyx1bRuZNHDL1FD7H-D6PAafY", "index": 0, "mediaType": "image/jpeg", "file": "urn:li:digitalmediaFile:(urn:li:digitalmediaAsset:C4D03AQEJkSP2gLg1aA,urn:li:digitalmediaArtifactClass:profile-displayphoto-shrink_100_100,0)", "identifierType": "EXTERNAL_URL", "identifierExpiresInSeconds": 1712188800 } ] }, { "artifact": "urn:li:digitalmediaMediaArtifact:(urn:li:digitalmediaAsset:C4D03AQEJkSP2gLg1aA,urn:li:digitalmediaMediaArtifactClass:profile-displayphoto-shrink_200_200)", "authorizationMethod": "PUBLIC", "data": { "com.linkedin.digitalmedia.mediaartifact.StillImage": { "orientation": "TopLeft", "storageAspectRatio": { "widthAspect": 1.0, "heightAspect": 1.0, "formatted": "1.00:1.00" }, "storageSize": { "width": 200, "height": 200 }, "rawMetadataTags": [], "scale": "DOWN", "mediaType": "image/jpeg", "rawCodecSpec": { "name": "jpeg", "type": "image" }, "displaySize": { "width": 200.0, "uom": "PX", "height": 200.0 }, "displayAspectRatio": { "widthAspect": 1.0, "heightAspect": 1.0, "formatted": "1.00:1.00" } } }, "identifiers": [ { "identifier": "https://media.licdn.com/dms/image/C4D03AQEJkSP2gLg1aA/profile-displayphoto-shrink_200_200/0/1661232745172?e=1712188800&v=beta&t=nDPU4akewODGbgzUJxj4fupr7Xv66YbvLdIC89-WP4k", "index": 0, "mediaType": "image/jpeg", "file": "urn:li:digitalmediaFile:(urn:li:digitalmediaAsset:C4D03AQEJkSP2gLg1aA,urn:li:digitalmediaArtifactClass:profile-displayphoto-shrink_200_200,0)", "identifierType": "EXTERNAL_URL", "identifierExpiresInSeconds": 1712188800 } ] }, { "artifact": "urn:li:digitalmediaMediaArtifact:(urn:li:digitalmediaAsset:C4D03AQEJkSP2gLg1aA,urn:li:digitalmediaMediaArtifactClass:profile-displayphoto-shrink_400_400)", "authorizationMethod": "PUBLIC", "data": { "com.linkedin.digitalmedia.mediaartifact.StillImage": { "orientation": "TopLeft", "storageAspectRatio": { "widthAspect": 1.0, "heightAspect": 1.0, "formatted": "1.00:1.00" }, "storageSize": { "width": 400, "height": 400 }, "rawMetadataTags": [], "scale": "DOWN", "mediaType": "image/jpeg", "rawCodecSpec": { "name": "jpeg", "type": "image" }, "displaySize": { "width": 400.0, "uom": "PX", "height": 400.0 }, "displayAspectRatio": { "widthAspect": 1.0, "heightAspect": 1.0, "formatted": "1.00:1.00" } } }, "identifiers": [ { "identifier": "https://media.licdn.com/dms/image/C4D03AQEJkSP2gLg1aA/profile-displayphoto-shrink_400_400/0/1661232745172?e=1712188800&v=beta&t=VQDb7KtpR5gT69eTuA8n0xuE_WYOJD5kkPgmXA_a7dM", "index": 0, "mediaType": "image/jpeg", "file": "urn:li:digitalmediaFile:(urn:li:digitalmediaAsset:C4D03AQEJkSP2gLg1aA,urn:li:digitalmediaArtifactClass:profile-displayphoto-shrink_400_400,0)", "identifierType": "EXTERNAL_URL", "identifierExpiresInSeconds": 1712188800 } ] }, { "artifact": "urn:li:digitalmediaMediaArtifact:(urn:li:digitalmediaAsset:C4D03AQEJkSP2gLg1aA,urn:li:digitalmediaMediaArtifactClass:profile-displayphoto-shrink_800_800)", "authorizationMethod": "PUBLIC", "data": { "com.linkedin.digitalmedia.mediaartifact.StillImage": { "orientation": "TopLeft", "storageAspectRatio": { "widthAspect": 1.0, "heightAspect": 1.0, "formatted": "1.00:1.00" }, "storageSize": { "width": 800, "height": 800 }, "rawMetadataTags": [], "scale": "UNCHANGED", "mediaType": "image/jpeg", "rawCodecSpec": { "name": "jpeg", "type": "image" }, "displaySize": { "width": 800.0, "uom": "PX", "height": 800.0 }, "displayAspectRatio": { "widthAspect": 1.0, "heightAspect": 1.0, "formatted": "1.00:1.00" } } }, "identifiers": [ { "identifier": "https://media.licdn.com/dms/image/C4D03AQEJkSP2gLg1aA/profile-displayphoto-shrink_800_800/0/1661232745172?e=1712188800&v=beta&t=o1MXA1LurNoZwPsrZ_M5Uk65JvLjqo_Ta9LOPbj5dUo", "index": 0, "mediaType": "image/jpeg", "file": "urn:li:digitalmediaFile:(urn:li:digitalmediaAsset:C4D03AQEJkSP2gLg1aA,urn:li:digitalmediaArtifactClass:profile-displayphoto-shrink_800_800,0)", "identifierType": "EXTERNAL_URL", "identifierExpiresInSeconds": 1712188800 } ] } ] } }, "id": "yjuMzBoycX"

}
    

© www.soinside.com 2019 - 2024. All rights reserved.