Подтвердить что ты не робот

Получение изображения LinkedIn

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

http://api.linkedin.com/v1/people/~/picture-urls:: (оригинал)

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

Ответ 3

После завершения аутентификации пользователя 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": "[email protected]",
  "firstName": "John",
  "lastName": "Doe",
  "formattedName": "John Doe",
  "pictureUrl": "https://media.licdn.com/mpr/mprx/0_0QblxThAqcTCt8rrncxxO5JAr...cjSsn6gRQ2b"
}

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

Ответ 4

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

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

Вы можете увидеть больше в документе Profile Picture API, чтобы посмотреть ответ JSON или документ Profile API.

Ответ 5

Я использую 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);
   ...
}

Надеюсь, это поможет. С наилучшими пожеланиями

Ответ 6

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

Разъяснение -

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

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

Ответ 7

Когда вы входите в систему, вы получите 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();

Ответ 8

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

Поскольку API LinkedIn предназначен для использования только от имени текущего зарегистрированного пользователя, он не предлагает аналогичную функциональность, как график facebook апи.

Ответ 9

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

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

Ответ 10

Для меня это работает

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

с драгоценным камнем omniauth-linkedin

Ответ 11

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

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

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

Ответ 12

кто-то попросил разрешения на новый API-интерфейс linkedin, я запросил разрешения на доступ к продукту, связанному с данными моей компании (привлечение), и через месяц я рассматриваю свою заявку.