52 votes

Obtenir la photo du profil LinkedIn

Existe-t-il un moyen simple de récupérer la photo de profil d'un utilisateur sur LinkedIn ?

Idéalement, comme vous le feriez avec Facebook. http://graph.facebook.com/userid/picture

3 votes

Prenez note de La réponse de ccoloma ci-dessous, car cela a changé beaucoup con v2 de l'API. Les réponses acceptées et les plus votées sont les suivantes v1 qui sera bientôt obsolète.

52voto

Rahim Basheer Points 321

Cet appel vous permet de retrouver la taille de la photo originale :

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

Notez que cette image peut être de n'importe quelle taille, vous devrez donc la mettre à l'échelle de votre côté, mais l'image est l'image originale téléchargée par l'utilisateur.

3 votes

Pouvez-vous expliquer cela d'une manière plus simple, s'il vous plaît ?

14 votes

Un petit point à préciser - l'image est "l'originale téléchargée par l'utilisateur"... avec l'ajout d'un logo linkedIn dans le coin :)

0 votes

Comment obtenir une image miniature de la photo de profil LinkedIn ?

35voto

Adam Trachtenberg Points 1276

Pas aussi facile... Vous devez passer par OAuth, puis au nom du membre, vous demandez :

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

13 votes

C'est dommage, j'avais espéré qu'il y avait un mécanisme plus simple.

1 votes

Donc nous devons faire deux appels, le premier pour obtenir l'url de l'image, et le second pour obtenir l'image réelle ?

2 votes

Saintmac. Non, si vous voulez seulement l'image, il suffit d'appeler cette url. {user-id} est une variable et "picture-url" est le texte que vous mettez dans l'url pour obtenir l'image. Cependant, dans mes tests, cela renvoie la plus petite image et non l'originale. Je recommande la réponse ci-dessous en utilisant picture-url: :(original)

17voto

ccoloma Points 151

Si vous utilisez la version 2.0 de l'API (tous les développeurs doivent migrer avant le 1er mars 2019 ), vous devez utiliser les projections pour étendre le profilePicture.displayImage . Si vous faites cela, vous aurez un élément JSON complet. displayImage~ (le '~' n'est pas une faute de frappe) à l'intérieur profilePicture avec toutes les informations dont vous pourriez avoir besoin.

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

Vous pouvez en voir plus sur le site Document API sur l'image de profil pour consulter la réponse JSON ou la doc sur l'API Profil .

12voto

Madan Sapkota Points 3464

Une fois que le Linkedin authentification des utilisateurs en utilisant OAuth 2.x est fait, faites une demande à l'URL des personnes.

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

~ représente l'utilisateur authentifié actuel. La réponse sera quelque chose comme ceci ...

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

J'espère que cela vous aidera !

2 votes

Comment obtenir l'image dans une taille légèrement plus grande ? Celle que je reçois est super petite :/

0 votes

@dietbacon avez-vous déjà trouvé une solution à votre problème ?

0 votes

@VitorOliveira non :(

6voto

diegosousa88 Points 91

J'utilise OWIN dans ma solution, donc après que l'utilisateur ait autorisé votre application à utiliser les informations d'identification de LinkedIn, une demande GET simple et claire à l'URL https://api.linkedin.com/v1/people/~ :(picture-URL)?format=json comme expliqué précédemment avec une autorisation Bearer dans les en-têtes de requête, a résolu mes problèmes.

Mon fichier 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);

Ma méthode pour obtenir la photo de profil de l'utilisateur dans 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;
}

Et enfin un extrait de mon action qui consomme la méthode ci-dessus :

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);
   ...
}

J'espère que cela pourra vous aider. Meilleures salutations

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X