Получение LinkedIn Изображение профиля - PullRequest
45 голосов
/ 05 августа 2011

Есть ли простой способ получить фотографию профиля пользователя LinkedIn?

Идеально похоже на то, как вы это делаете с Facebook - http://graph.facebook.com/userid/picture

Ответы [ 11 ]

51 голосов
/ 01 марта 2012

Вы можете получить исходный размер фотографии с помощью этого вызова:

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

Обратите внимание, что это может быть любой размер, поэтому вам нужно будет выполнить масштабирование на вашей стороне, ноизображение является исходным, загруженным пользователем.

33 голосов
/ 06 августа 2011

Не так просто ... Вам нужно пройти OAuth, затем от имени участника вы запрашиваете:

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

10 голосов
/ 05 января 2016

Как только аутентификация пользователя Linkedin с использованием OAuth 2.x завершена, отправьте запрос на URL-адрес пользователя.

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

Где ~ обозначает текущего аутентифицированного пользователя. Ответ будет примерно таким ...

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

Надеюсь, это поможет!

7 голосов
/ 21 декабря 2018

Если вы используете версию API 2.0 (все разработчики должны перенести к 1 марта 2019 ), вы должны использовать прогнозы для расширения profilePicture.displayImage.Если вы сделаете это, у вас будет полный элемент JSON displayImage~ ('~' не является опечаткой) внутри profilePicture со всей необходимой информацией.

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

Более подробную информацию можно найти в документе API профиля изображения , чтобы посмотреть ответ JSON, или Документ API профиля .

6 голосов
/ 21 февраля 2015

Я использую OWIN в своем решении, поэтому после того, как пользователь разрешит вашему приложению использовать учетные данные LinkedIn, простой и простой GET-запрос к URL https://api.linkedin.com/v1/people/~:(picture-url)?format=json, как объяснялось ранее, с авторизацией Bearer в заголовках запросов, решил мои проблемы.

Файл My 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 голосов
/ 24 марта 2017

Это хорошо работает для меня!

Объяснено -

Это для миниатюры со всеми другими данными-

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!

В настоящее время используется в Грэдби

2 голосов
/ 03 января 2015

Когда вы войдете в 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 голос
/ 05 февраля 2017

Это мое решение, и оно работает очень-очень хорошо:

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
1 голос
/ 14 апреля 2015

Если ваша цель - просто показать фотографию на вашем сайте, то плагин LinkedIn Профиль участника может сработать для вас.Он будет отображать фотографию, некоторую дополнительную информацию, а также брендинг LinkedIn.

Поскольку API-интерфейс LinkedIn предназначен для использования только от имени текущего пользователя, вошедшего в систему , он не предлагает аналогичные функции, как API Graph Facebook.

0 голосов
/ 22 января 2017

Это может быть не совсем то, что вы просите, но это полезно для отдельных расследований.

Откройте страницу в Firefox, щелкните левой кнопкой мыши меню над фоновым изображением.Выберите Inspect Element (Q).

search -target-image "Это будет конец атрибута id в элементе img. Атрибут src этого элемента img будет URL-адресом фонового изображения.

...