Obtenir L'Image De Profil LinkedIn

y a-t-il un moyen facile de saisir une photo de profil LinkedIn d'un utilisateur?

Idéalement similaire à la façon dont vous le feriez avec Facebook - http://graph.facebook.com/userid/picture

38
demandé sur Matt Ball 2011-08-05 15:39:34

10 réponses

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

30
répondu Adam Trachtenberg 2013-10-16 23:46:30

vous pouvez récupérer la taille originale de la photo avec cet appel:

http://api.linkedin.com/v1/people/~/image-url::(original)

notez que cela peut être n'importe quelle taille, donc vous aurez besoin de faire une mise à l'échelle sur votre côté, mais l'image est celle d'origine téléchargée par l'utilisateur.

49
répondu Rahim Basheer 2013-01-11 23:15:01

une fois le Linkedin authentification de l'utilisateur en utilisant OAuth 2.x est fait, faire une demande à la population de l'URL.

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

~ signifie actuelle utilisateur authentifié. La réponse sera quelque chose comme cela ...

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

Espérons que cette aide!

10
répondu Madan Sapkota 2016-01-05 07:40:30

J'utilise OWIN dans ma solution donc après que l'Utilisateur a permis à votre application D'utiliser les informations D'identification de LinkedIn une requête simple et simple OBTENIR À URL https://api.linkedin.com/v1/people/~: (picture-url)?format=json comme expliqué précédemment avec une autorisation au porteur dans les en-têtes de requête résolu mes problèmes.

Mon Démarrage.Auth.fichier 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 de l'utilisateur de l'image de profil de 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 brin de mon action consomme de 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 pourrait aider. Meilleures salutations!--6-->

6
répondu diegosousa88 2015-02-21 06:01:09

Cela fonctionne bien pour moi!

Explique -

Ceci est pour une vignette avec toutes les autres données-

https://api.linkedin.com/v1/people/~:(id,location,picture-urls::(original),specialties,public-profile-url,email-address,formatted-name)?format=json

Ceci est pour l'image originale avec toutes les autres données -

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

il suffit d'utiliser picture-urls::(original)au lieu de picture-url!

C'est actuellement utilisé dans Gradbee

3
répondu Siddharth 2017-03-24 08:16:24

lorsque vous vous connectez à linkedin, vous obtiendrez accesstoken. Utiliser ce jeton d'accès et vous pouvez récupérer les données utilisateurs

 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();
2
répondu Kimmi Dhingra 2015-01-03 10:55:19

Si votre objectif est simplement d'afficher la photo sur votre site, alors le LinkedIn Profil De Membre Plugin peut travailler pour vous. Il affichera la photo, quelques informations supplémentaires, avec LinkedIn branding.

puisque L'API LinkedIn est conçue pour être utilisée seulement au nom de actuel de l'utilisateur connecté il n'offre pas de fonctionnalités similaires à celles de l'api Facebook graph.

1
répondu Hoodah 2015-04-14 18:49:26

C'est ma solution et il fonctionne très très bien:

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
répondu piezzoritro 2017-02-05 13:00:01

Pour moi cela fonctionne

image= auth.supplémentaire.raw_info.pictureUrls.valeur.Dernière.premier

avec omniauth-linkedin gem

0
répondu sparkle 2015-02-05 10:10:58

ce n'est peut-être pas tout à fait ce que vous demandez, mais c'est utile pour les enquêtes individuelles.

appeler la page dans Firefox, clic gauche sur le menu au-dessus de l'image de fond. Sélectionnez Inspecter L'Élément (Q).

recherche de-cible-image" Ce sera la fin de l'attribut id d'un élément img. L'attribut src de cet élément img, sera L'URL de l'image de fond.

0
répondu Robin Hodson 2017-01-22 07:08:18