在 ASP .NET Core 3.1 中使用 Linkedin 注册/登录

Zub*_*ana 0 c# asp.net-core-identity asp.net-core-2.1 .net-core-3.1 asp.net-core-3.1

我正在为我的 Web 项目使用 ASP .NET Core 3.1 个人身份验证模板。我正在尝试集成 LinkedIn 外部登录,但不知道如何正确执行。

我使用以下链接寻求帮助: OAuth LinkedIn Integration

这是我的代码:

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");
            });
Run Code Online (Sandbox Code Playgroud)

但是我在OnGetCallbackAsync处理程序中遇到错误:

var info = await _signInManager.GetExternalLoginInfoAsync();
Run Code Online (Sandbox Code Playgroud)

info接收到的值null

Zub*_*ana 6

在尝试了多个选项后,我刚刚找到了一个用于linkedin 外部登录的 github 存储库和 nuget 包,它运行良好,没有任何额外的代码,就像谷歌和 Facebook 登录的微软官方文档一样。

我的代码:

services.AddAuthentication()
            .AddLinkedIn(options =>
            {
                IConfigurationSection linkedinAuthNSection =
                Configuration.GetSection("Authentication:Linkedin");

                options.ClientId = linkedinAuthNSection["ClientId"];
                options.ClientSecret = linkedinAuthNSection["ClientSecret"];
            });
Run Code Online (Sandbox Code Playgroud)

Nuget 包: AspNet.Security.OAuth.LinkedIn

Github 存储库: AspNet.Security.OAuth.Providers

超过 60 个提供商的集成可用,包括 Instagarm、Dropbox、Soundcloud 等。完整列表可在 github 链接中找到。

只需将Providersfrom替换为AspNet.Security.OAuth.Providers您想要的提供商名称。一些例子是:

Instagram: AspNet.Security.OAuth.Instagram

Dropbox: AspNet.Security.OAuth.Dropbox

苹果: AspNet.Security.OAuth.Apple