Зарегистрироваться / Войти через Linkedin в ASP. NET Core 3.1 - PullRequest
0 голосов
/ 29 апреля 2020

Я использую ASP. NET Core 3.1 Индивидуальный шаблон аутентификации для моего веб-проекта. Я пытаюсь интегрировать LinkedIn External Login, но не знаю, как это сделать правильно.

Я использовал следующую ссылку для справки: 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");
            });

Но я получаю ошибку в обработчике OnGetCallbackAsync по адресу:

var info = await _signInManager.GetExternalLoginInfoAsync();

получено значение info null

1 Ответ

0 голосов
/ 29 апреля 2020

Попробовав несколько вариантов, я только что нашел github repo и пакет nuget для внешнего входа в систему linkedin, и он прекрасно работает без какого-либо дополнительного кода, как официальная документация Microsoft для входа в Google и Facebook.

Мой код:

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

                options.ClientId = linkedinAuthNSection["ClientId"];
                options.ClientSecret = linkedinAuthNSection["ClientSecret"];
            });

Пакет Nuget: As pNet .Security.OAuth.LinkedIn

Репозиторий Github: As pNet .Security.OAuth.Providers

Доступна интеграция более чем с 60 провайдерами, включая Instagarm, Dropbox, Soundcloud и др. c. Полный список доступен по ссылке github.

Просто замените Providers из AspNet.Security.OAuth.Providers на нужное имя провайдера. Вот некоторые примеры:

Instagram: As pNet .Security.OAuth.Instagram

Dropbox: As pNet .Security.OAuth.Dropbox

Apple: As pNet .Security.OAuth.Apple

...