@@ -24,7 +24,15 @@ public LinkedInAuthenticationHandler([NotNull] HttpClient client)
24
24
25
25
protected override async Task < AuthenticationTicket > CreateTicketAsync ( [ NotNull ] ClaimsIdentity identity ,
26
26
[ NotNull ] AuthenticationProperties properties , [ NotNull ] OAuthTokenResponse tokens ) {
27
- var request = new HttpRequestMessage ( HttpMethod . Get , Options . UserInformationEndpoint ) ;
27
+ var address = Options . UserInformationEndpoint ;
28
+
29
+ // If at least one field is specified,
30
+ // append the fields to the endpoint URL.
31
+ if ( Options . Fields . Count != 0 ) {
32
+ address = address . Insert ( address . LastIndexOf ( "~" ) + 1 , $ ":({ string . Join ( "," , Options . Fields ) } )") ;
33
+ }
34
+
35
+ var request = new HttpRequestMessage ( HttpMethod . Get , address ) ;
28
36
request . Headers . Add ( "x-li-format" , "json" ) ;
29
37
request . Headers . Authorization = new AuthenticationHeaderValue ( "Bearer" , tokens . AccessToken ) ;
30
38
@@ -44,8 +52,26 @@ protected override async Task<AuthenticationTicket> CreateTicketAsync([NotNull]
44
52
identity . AddOptionalClaim ( ClaimTypes . NameIdentifier , LinkedInAuthenticationHelper . GetIdentifier ( payload ) , Options . ClaimsIssuer )
45
53
. AddOptionalClaim ( ClaimTypes . Name , LinkedInAuthenticationHelper . GetName ( payload ) , Options . ClaimsIssuer )
46
54
. AddOptionalClaim ( ClaimTypes . Email , LinkedInAuthenticationHelper . GetEmail ( payload ) , Options . ClaimsIssuer )
55
+ . AddOptionalClaim ( ClaimTypes . GivenName , LinkedInAuthenticationHelper . GetGivenName ( payload ) , Options . ClaimsIssuer )
56
+ . AddOptionalClaim ( ClaimTypes . Surname , LinkedInAuthenticationHelper . GetFamilyName ( payload ) , Options . ClaimsIssuer )
47
57
. AddOptionalClaim ( "urn:linkedin:profile" , LinkedInAuthenticationHelper . GetPublicProfileUrl ( payload ) , Options . ClaimsIssuer )
48
- . AddOptionalClaim ( "urn:linkedin:profilepicture" , LinkedInAuthenticationHelper . GetProfilePictureUrl ( payload ) , Options . ClaimsIssuer ) ;
58
+ . AddOptionalClaim ( "urn:linkedin:profilepicture" , LinkedInAuthenticationHelper . GetProfilePictureUrl ( payload ) , Options . ClaimsIssuer )
59
+ . AddOptionalClaim ( "urn:linkedin:industry" , LinkedInAuthenticationHelper . GetIndustry ( payload ) , Options . ClaimsIssuer )
60
+ . AddOptionalClaim ( "urn:linkedin:summary" , LinkedInAuthenticationHelper . GetSummary ( payload ) , Options . ClaimsIssuer )
61
+ . AddOptionalClaim ( "urn:linkedin:headline" , LinkedInAuthenticationHelper . GetHeadline ( payload ) , Options . ClaimsIssuer )
62
+ . AddOptionalClaim ( "urn:linkedin:positions" , LinkedInAuthenticationHelper . GetPositions ( payload ) , Options . ClaimsIssuer )
63
+ . AddOptionalClaim ( "urn:linkedin:maidenname" , LinkedInAuthenticationHelper . GetMaidenName ( payload ) , Options . ClaimsIssuer )
64
+ . AddOptionalClaim ( "urn:linkedin:phoneticfirstname" , LinkedInAuthenticationHelper . GetPhoneticFirstName ( payload ) , Options . ClaimsIssuer )
65
+ . AddOptionalClaim ( "urn:linkedin:phoneticlastname" , LinkedInAuthenticationHelper . GetPhoneticLastName ( payload ) , Options . ClaimsIssuer )
66
+ . AddOptionalClaim ( "urn:linkedin:phoneticname" , LinkedInAuthenticationHelper . GetPhoneticName ( payload ) , Options . ClaimsIssuer )
67
+ . AddOptionalClaim ( "urn:linkedin:location" , LinkedInAuthenticationHelper . GetLocation ( payload ) , Options . ClaimsIssuer )
68
+ . AddOptionalClaim ( "urn:linkedin:specialties" , LinkedInAuthenticationHelper . GetSpecialties ( payload ) , Options . ClaimsIssuer )
69
+ . AddOptionalClaim ( "urn:linkedin:numconnections" , LinkedInAuthenticationHelper . GetNumConnections ( payload ) , Options . ClaimsIssuer )
70
+ . AddOptionalClaim ( "urn:linkedin:numconnectionscapped" , LinkedInAuthenticationHelper . GetNumConnectionsCapped ( payload ) , Options . ClaimsIssuer )
71
+ . AddOptionalClaim ( "urn:linkedin:currentshare" , LinkedInAuthenticationHelper . GetCurrentShare ( payload ) , Options . ClaimsIssuer )
72
+ . AddOptionalClaim ( "urn:linkedin:sitestandardprofilerequest" , LinkedInAuthenticationHelper . GetSiteStandardProfileRequest ( payload ) , Options . ClaimsIssuer )
73
+ . AddOptionalClaim ( "urn:linkedin:apistandardprofilerequest" , LinkedInAuthenticationHelper . GetApiStandardProfileRequest ( payload ) , Options . ClaimsIssuer )
74
+ . AddOptionalClaim ( "urn:linkedin:pictureurls" , LinkedInAuthenticationHelper . GetPictureUrls ( payload ) , Options . ClaimsIssuer ) ;
49
75
50
76
var principal = new ClaimsPrincipal ( identity ) ;
51
77
var ticket = new AuthenticationTicket ( principal , properties , Options . AuthenticationScheme ) ;
0 commit comments