当前位置: 首页 > 编程语言 > C#

AddOAuthlinkedindotnetcore2.0分享

时间:2023-04-11 10:56:03 C#

AddOAuthlinkedindotnetcore2.0决定使用以下通用实现:services.AddAuthentication().AddOAuth("LinkedIn",c=>{c.ClientId=Configuration["linkedin-app-id"];c.ClientSecret=Configuration["linkedin-app-secret"]c.Scope.Add("r_basicprofile");c.Scope.Add("r_emailaddress");c.CallbackPath="/signin-linkedin";c.AuthorizationEndpoint="https://www.linkedin.com/oauth/v2/authorization";c.TokenEndpoint="https://www.linkedin.com/oauth/v2/accessToken";c.UserInformationEndpoint="https://api.linkedin.com/v1/people/~:(id,formatted-name,email-address,picture-url)";})我有一个问题,因为GetExternalLoginInfoAsync()为空,查看IdentityASP.net核心源,这是因为providerkey为空。取自asp.net核心代码:varproviderKey=auth.Principal.FindFirstValue(ClaimTypes.NameIdentifier);varprovider=items["LoginProvider"]作为字符串;if(providerKey==null||provider==null){返回null;问题是在哪里可以将ClaimTypes.NameIdentifier添加到LinkedIn声明中?这种情况下,必须使用OauthEvent手动预填充每个Claim,如下:以上就是C#学习教程的全部内容:AddOAuthlinkedindotnetcore2.0,如果对大家有用还需要进一步了解C#的我希望大家多多关注教程—.AddOAuth("LinkedIn",c=>{c.ClientId=Configuration["linkedin-app-id"];c.ClientSecret=Configuration["linkedin-app-secret"];c.Scope.Add("r_basicprofile");c.Scope.Add("r_emailaddress");c.CallbackPath="/signin-linkedin";c.AuthorizationEndpoint="https://www.linkedin.com/oauth/v2/authorization";c.TokenEndpoint="https://www.linkedin.com/oauth/v2/accessToken";c.UserInformationEndpoint="https://api.linkedin.com/v1/people/~:(id,格式化名称,电子邮件地址,图片url)";c.Events=newOAuthEvents{OnCreatingTicket=asynccontext=>{varrequest=newHttpRequestMessage(HttpMethod.Get,context.Options.UserInformationEndpoint);request.Headers.Authorization=newAuthenticationHeaderValue("Bearer",context.AccessToken);request.Headers.Add("x-li-format","json");varresponse=awaitcontext.Backchannel.SendAsync(request,context.HttpContext.RequestAborted);响应.EnsureSuccessStatusCode();varuser=JObject.Parse(awaitresponse.Content.ReadAsStringAsync());varuserId=user.Value("id");如果(!string.IsNullOrEmpty(userId)){context.Identity.AddClaim(newClaim(ClaimTypes.NameIdentifier,userId,ClaimValueTypes.String,context.Options.ClaimsIssuer));}varformattedName=user.Value("formattedName");如果(!string.IsNullOrEmpty(formattedName)){context.Identity.AddClaim(newClaim(ClaimTypes.Name,formattedName,ClaimValueTypes.String,context.Options.ClaimsIssuer));}varemail=user.Value("emailAddress");如果(!string.IsNullOrEmpty(email)){context.Identity.AddClaim(newClaim(ClaimTypes.Email,电子邮件,ClaimValueTypes.String,context.Options.ClaimsIssuer));}varpictureUrl=user.Value("pictureUrl");如果(!string.IsNullOrEmpty(pictureUrl)){context.Identity.AddClaim(newClaim("profile-picture",pictureUrl,ClaimValueTypes.String,context.Options.ClaimsIssuer));}}};})本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢