diff --git a/src/Owin.Security.Providers.LinkedIn/LinkedInAuthenticationHandler.cs b/src/Owin.Security.Providers.LinkedIn/LinkedInAuthenticationHandler.cs
index e6a2191..2d7e479 100644
--- a/src/Owin.Security.Providers.LinkedIn/LinkedInAuthenticationHandler.cs
+++ b/src/Owin.Security.Providers.LinkedIn/LinkedInAuthenticationHandler.cs
@@ -123,6 +123,22 @@ namespace Owin.Security.Providers.LinkedIn
context.Identity.AddClaim(new Claim(ClaimTypes.Name, context.Name, XmlSchemaString, Options.AuthenticationType));
context.Identity.AddClaim(new Claim("urn:linkedin:name", context.Name, XmlSchemaString, Options.AuthenticationType));
}
+ if (!string.IsNullOrEmpty(context.Industry))
+ {
+ context.Identity.AddClaim(new Claim("urn:linkedin:industry", context.Industry, XmlSchemaString, Options.AuthenticationType));
+ }
+ if (!string.IsNullOrEmpty(context.Positions))
+ {
+ context.Identity.AddClaim(new Claim("urn:linkedin:positions", context.Positions, XmlSchemaString, Options.AuthenticationType));
+ }
+ if (!string.IsNullOrEmpty(context.Summary))
+ {
+ context.Identity.AddClaim(new Claim("urn:linkedin:summary", context.Summary, XmlSchemaString, Options.AuthenticationType));
+ }
+ if (!string.IsNullOrEmpty(context.Headline))
+ {
+ context.Identity.AddClaim(new Claim("urn:linkedin:headline", context.Headline, XmlSchemaString, Options.AuthenticationType));
+ }
if (!string.IsNullOrEmpty(context.Link))
{
context.Identity.AddClaim(new Claim("urn:linkedin:url", context.Link, XmlSchemaString, Options.AuthenticationType));
diff --git a/src/Owin.Security.Providers.LinkedIn/LinkedInAuthenticationOptions.cs b/src/Owin.Security.Providers.LinkedIn/LinkedInAuthenticationOptions.cs
index 0f5ca6c..02aa95c 100644
--- a/src/Owin.Security.Providers.LinkedIn/LinkedInAuthenticationOptions.cs
+++ b/src/Owin.Security.Providers.LinkedIn/LinkedInAuthenticationOptions.cs
@@ -119,7 +119,11 @@ namespace Owin.Security.Providers.LinkedIn
"formatted-name",
"email-address",
"public-profile-url",
- "picture-url"
+ "picture-url",
+ "industry",
+ "headline",
+ "summary",
+ "positions"
};
BackchannelTimeout = TimeSpan.FromSeconds(60);
}
diff --git a/src/Owin.Security.Providers.LinkedIn/Provider/LinkedInAuthenticatedContext.cs b/src/Owin.Security.Providers.LinkedIn/Provider/LinkedInAuthenticatedContext.cs
index 437ce61..34ed2d8 100644
--- a/src/Owin.Security.Providers.LinkedIn/Provider/LinkedInAuthenticatedContext.cs
+++ b/src/Owin.Security.Providers.LinkedIn/Provider/LinkedInAuthenticatedContext.cs
@@ -7,6 +7,7 @@ using Microsoft.Owin;
using Microsoft.Owin.Security;
using Microsoft.Owin.Security.Provider;
using Newtonsoft.Json.Linq;
+using Newtonsoft.Json;
namespace Owin.Security.Providers.LinkedIn
{
@@ -41,6 +42,10 @@ namespace Owin.Security.Providers.LinkedIn
Link = TryGetValue(user, "publicProfileUrl");
UserName = TryGetValue(user, "formattedName").Replace(" ", "");
Email = TryGetValue(user, "emailAddress");
+ Industry = TryGetValue(user, "industry");
+ Summary = TryGetValue(user, "summary");
+ Headline = TryGetValue(user, "headline");
+ Positions = TryGetValueAndSerialize(user, "positions");
}
///
@@ -87,6 +92,28 @@ namespace Owin.Security.Providers.LinkedIn
///
public string FamilyName { get; private set; }
+ ///
+ /// Describes the users membership profile
+ ///
+ public string Summary { get; private set; }
+
+ ///
+ /// Industry the member belongs to
+ /// https://developer.linkedin.com/docs/reference/industry-codes
+ ///
+ public string Industry { get; set; }
+
+ ///
+ /// The members headline
+ ///
+ public string Headline { get; set; }
+
+ ///
+ /// Member's current positions
+ /// https://developer.linkedin.com/docs/fields/positions
+ ///
+ public string Positions { get; set; }
+
public string Link { get; private set; }
///
@@ -109,5 +136,11 @@ namespace Owin.Security.Providers.LinkedIn
JToken value;
return user.TryGetValue(propertyName, out value) ? value.ToString() : null;
}
+
+ private static string TryGetValueAndSerialize(JObject user, string propertyName)
+ {
+ JToken value;
+ return user.TryGetValue(propertyName, out value) ? JsonConvert.SerializeObject(value) : null;
+ }
}
}