有没有简单的方法来获取用户LinkedIn个人资料照片?
理想情况与Facebook的相似 - http://graph.facebook.com/userid/picture
答案 0 :(得分:51)
您可以使用此调用检索原始照片尺寸:
http://api.linkedin.com/v1/people/~/picture-urls::(original)
请注意,这可能是任何尺寸,因此您需要进行缩放,但图像是用户上传的原始图像。
答案 1 :(得分:32)
不那么容易......你需要通过OAuth,然后代表会员,你要求:
http://api.linkedin.com/v1/people/{user-id}/picture-url
答案 2 :(得分:10)
使用OAuth 2.x完成Linkedin 用户身份验证后,请向人员网址发出请求。
~
代表当前经过身份验证的用户。响应将是这样的......
{
"id": "KPxRFxLxuX",
"emailAddress": "johndoe@example.com",
"firstName": "John",
"lastName": "Doe",
"formattedName": "John Doe",
"pictureUrl": "https://media.licdn.com/mpr/mprx/0_0QblxThAqcTCt8rrncxxO5JAr...cjSsn6gRQ2b"
}
希望这有帮助!
答案 3 :(得分:7)
如果您使用API的2.0版本(所有开发人员都需要迁移by March 1, 2019),则应使用投射方式来扩展profilePicture.displayImage
。如果执行此操作,则displayImage~
中将包含完整的JSON元素profilePicture
(“〜”不是错字),其中包含您可能需要的所有信息。
https://api.linkedin.com/v2/me?projection=(id,profilePicture(displayImage~:playableStreams))
您可以在Profile Picture API doc上查看更多内容,以查看JSON响应或the Profile API doc。
答案 4 :(得分:6)
我在我的解决方案中使用OWIN,因此在用户允许您的应用程序使用LinkedIn凭据后,对URL https://api.linkedin.com/v1/people/~:(picture-url)?format=json进行简单明了的GET请求,如前所述,请求标头中的Bearer授权解决了我的问题。
我的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);
...
}
我希望它可以提供帮助。 最好的问候
答案 5 :(得分: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
中使用答案 6 :(得分:2)
当您登录linkedin时,您将获得accessstoken。使用该访问令牌,您可以检索用户数据
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();
答案 7 :(得分:1)
如果您的目标只是在您的网站上显示照片,那么LinkedIn Member Profile Plugin可能会为您效劳。它将显示照片,一些其他信息以及LinkedIn品牌。
由于LinkedIn API仅用于代表current logged in user,因此它不提供与facebook图表api类似的功能。
答案 8 :(得分: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
答案 9 :(得分:0)
对我而言,这是有效的
image = auth.extra.raw_info.pictureUrls.values.last.first
使用omniauth-linkedin gem
答案 10 :(得分:0)
这可能不是您所要求的,但它对个人调查很有用。
在Firefox中调用页面,左键单击背景图像上的菜单。 选择Inspect Element(Q)。
搜索-target-image&#34; 这将是img元素中id属性的结束。 该img元素的src属性将是背景图像的URL。