获得LinkedIn个人资料图片

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

理想情况下,你将如何使用Facebook – http://graph.facebook.com/userid/picture

不是那么容易…你需要通过OAuth,然后代表成员,你要求:

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

您可以通过此调用检索原始照片大小:

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

请注意,这可以是任意大小,所以您需要在您身边进行缩放,但图像是用户上传的原始图像。

我在我的解决scheme中使用OWIN,所以在用户允许你的应用程序使用LinkedIn凭证一个简单和普通的GET请求到URL 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); ... } 

我希望它可以帮助。 最好的祝福

一旦使用OAuth 2.x的Linkedin 用户authentication完成,向人员URL发出请求。

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

其中~代表当前authentication的用户。 回应会是这样的…

 { "id": "KPxRFxLxuX", "emailAddress": "johndoe@example.com", "firstName": "John", "lastName": "Doe", "formattedName": "John Doe", "pictureUrl": "https://media.licdn.com/mpr/mprx/0_0QblxThAqcTCt8rrncxxO5JAr...cjSsn6gRQ2b" } 

希望这可以帮助!

当你loginlinkedin时,你会得到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(); 

如果您的目标只是在您的网站上显示的照片,然后LinkedIn 会员档案插件可能会为你工作。 它会显示照片,一些额外的信息,以及LinkedIn品牌。

由于LinkedIn API被devise为仅用于代表当前login的用户,因此它不提供与facebookgraphicsAPI类似的function。

这是我的解决scheme,它工作得非常好:

 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 

这对我很好!

解释 –

这是与所有其他数据的缩略图 –

 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

对我来说这个工作

image = auth.extra.raw_info.pictureUrls.values.last.first

与omniauth-linkedin创业板

这可能不是你所要求的,但对个人调查很有用。

在Firefox中调用页面,左键单击背景图片上方的菜单。 select检查元素(Q)。

search-target-image“这将是img元素的id属性的结尾,img元素的src属性将是背景图片的URL。