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
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
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.
une fois le Linkedin authentification de l'utilisateur en utilisant OAuth 2.x est fait, faire une demande à la population de l'URL.
Où ~
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!
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-->
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
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();
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.
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
Pour moi cela fonctionne
image= auth.supplémentaire.raw_info.pictureUrls.valeur.Dernière.premier
avec omniauth-linkedin gem
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.