it-swarm.com.de

LinkedIn Profilbild erhalten

Gibt es eine einfache Möglichkeit, ein LinkedIn-Profilfoto eines Benutzers zu erfassen?

Idealerweise ähnlich wie bei Facebook - http://graph.facebook.com/userid/picture

42
George Wiscombe

Nicht so einfach ... Sie müssen OAuth durchgehen und dann im Namen des Mitglieds nachfragen:

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

31

Sie können die ursprüngliche Fotogröße mit diesem Anruf abrufen:

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

Beachten Sie, dass dies eine beliebige Größe haben kann. Sie müssen also eine Skalierung auf Ihrer Seite vornehmen. Das Bild ist jedoch das Original, das vom Benutzer hochgeladen wurde.

51
Rahim Basheer

Sobald die Linkedin user-Authentifizierung mit OAuth 2.x abgeschlossen ist, fordern Sie die Personen-URL an.

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

Dabei steht ~ für den aktuellen authentifizierten Benutzer. Die Antwort wird so etwas sein ...

{
  "id": "KPxRFxLxuX",
  "emailAddress": "[email protected]",
  "firstName": "John",
  "lastName": "Doe",
  "formattedName": "John Doe",
  "pictureUrl": "https://media.licdn.com/mpr/mprx/0_0QblxThAqcTCt8rrncxxO5JAr...cjSsn6gRQ2b"
}

Hoffe das hilft!

10
Madan Sapkota

Wenn Sie die 2.0-Version der API verwenden (alle Entwickler müssen migrieren bis zum 1. März 2019 ), sollten Sie Projektionen verwenden, um den profilePicture.displayImage Zu erweitern. Wenn Sie dies tun, haben Sie ein vollständiges JSON-Element displayImage~ (Das '~' ist kein Tippfehler) in profilePicture mit allen Informationen, die Sie möglicherweise benötigen.

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

Weitere Informationen finden Sie unter Profilbild-API-Dokument , um die JSON-Antwort anzuzeigen, oder Profil-API-Dokument .

9
ccoloma

Ich verwende OWIN in meiner Lösung, so dass die Anwendung LinkedIn-Anmeldeinformationen nach dem Benutzer eine einfache und einfache GET-Anforderung an die URL https://api.linkedin.com/v1/people/~:(picture-url)?format zulässt = json wie zuvor erklärt, mit einer Bearer-Autorisierung in Anforderungs-Headern wurden meine Probleme gelöst.

Meine Startup.Auth.cs-Datei

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

Meine Methode, um das Profilbild eines Benutzers in LinkedIn abzurufen:

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

Und zum Schluss noch ein Ausschnitt meiner Aktion, die die obige Methode verbraucht:

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

Ich hoffe, es könnte helfen

6
diegosousa88

Das funktioniert gut für mich!

Erklärt - 

Dies ist für ein Miniaturbild mit allen anderen Daten- 

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

Dies ist für das Originalbild mit allen anderen Daten - 

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

Verwenden Sie einfach picture-urls::(original) anstelle von picture-url!

Dies wird derzeit in Gradbee verwendet.

4
Siddharth

Wenn Sie sich bei LinkedIn anmelden, erhalten Sie Zugriff. Verwenden Sie dieses Zugriffstoken, und Sie können Benutzerdaten abrufen 

 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
Kimmi Dhingra

Wenn Sie lediglich das Foto auf Ihrer Website anzeigen möchten, kann das LinkedIn Member Profile Plugin für Sie funktionieren. Das Foto wird zusammen mit dem LinkedIn-Branding mit einigen zusätzlichen Informationen angezeigt. 

Da die LinkedIn-API nur für den aktuell angemeldeten Benutzer verwendet werden soll, bietet sie keine ähnliche Funktionalität wie die Facebook-Grafik-API.

1
Hoodah

Dies ist meine Lösung und funktioniert sehr gut:

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
piezzoritro

Das ist vielleicht nicht ganz das, wonach Sie fragen, aber es ist nützlich für individuelle Untersuchungen.

Rufen Sie die Seite in Firefox auf, und klicken Sie mit der linken Maustaste auf das Menü über dem Hintergrundbild. Wählen Sie Inspect Element (Q).

suche nach -target-image " Dies ist das Ende des id-Attributs in einem img-Element . Das src-Attribut dieses img-Elements ist die URL des Hintergrundbildes.

0
Robin Hodson

Für mich funktioniert das

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

mit Omniauth-linkedin gem

0
sparkle