我在我的web项目中使用ASP.NET Core 3.1 Individual Authentication Template。我正试图整合LinkedIn外部登录,但不知道如何正确地进行。
我使用了以下链接寻求帮助。OAuth LinkedIn集成
这是我的代码。
services.AddAuthentication()
.AddOAuth("LinkedIn", "LinkedIn", options =>
{
IConfigurationSection linkedinAuthNSection =
Configuration.GetSection("Authentication:Linkedin");
options.ClientId = linkedinAuthNSection["ClientId"];
options.ClientSecret = linkedinAuthNSection["ClientSecret"];
options.CallbackPath = new PathString("/signin-linkedin");
options.AuthorizationEndpoint = "https://www.linkedin.com/oauth/v2/authorization";
options.TokenEndpoint = "https://www.linkedin.com/oauth/v2/accessToken";
options.UserInformationEndpoint = "https://api.linkedin.com/v1/people/~:(id,formatted-name,email-address,picture-url)";
options.Scope.Add("r_liteprofile");
options.Scope.Add("r_emailaddress");
options.Scope.Add("w_member_social");
});
但我得到错误的 OnGetCallbackAsync
处理程序在:
var info = await _signInManager.GetExternalLoginInfoAsync();
价值为 info
已收到 null
在尝试了多种选择后,我只是发现了一个github repo和nuget包的Linkedin外部登录,它是完美的工作,没有任何额外的代码,就像微软官方文档的谷歌和Facebook登录。
我的代码。
services.AddAuthentication()
.AddLinkedIn(options =>
{
IConfigurationSection linkedinAuthNSection =
Configuration.GetSection("Authentication:Linkedin");
options.ClientId = linkedinAuthNSection["ClientId"];
options.ClientSecret = linkedinAuthNSection["ClientSecret"];
});
Nuget包: AspNet.Security.OAuth.LinkedIn
Github Repo.AspNet.Security.OAuth.Providers AspNet.Security.OAuth.Providers
超过60个供应商集成,包括Instagarm,Dropbox,Soundcloud等。完整的列表可在github链接。
只需替换 Providers
从 AspNet.Security.OAuth.Providers
与您所需的提供商名称。一些例子是
Instagram.AspNet.Security.OAuth.Instagram AspNet.Security.OAuth.Instagram
Dropbox.AspNet.Security.OAuth.Dropbox AspNet.Security.OAuth.Dropbox
Apple.AspNet.Security.OAuth.Apple AspNet.Security.OAuth.Apple