С помощью IdentityServer4 и входа в Twitter есть ли способ подключить существующую учетную запись?

#.net-core #twitter #identityserver4

#.net-core #Twitter #identityserver4

Вопрос:

С помощью .Net Core 3.1 и IdentityServer4 я успешно настроил вход в Twitter.

Однако, если я уже создал учетную запись с тем же адресом электронной почты (независимо от Twitter)… когда я нажимаю войти с помощью Twitter, он перенаправляет меня обратно на внешнюю страницу входа на сервер идентификации со следующим сообщением:

Вы успешно прошли аутентификацию в Twitter. Пожалуйста, введите адрес электронной почты для этого сайта ниже и нажмите кнопку Зарегистрироваться, чтобы завершить вход в систему.

и текстовое поле с моим адресом электронной почты в Twitter, который уже заполнен: [ myemail@mydomain.com ]

Когда я нажимаю Зарегистрироваться, я получаю сообщение об ошибке:

Имя пользователя ‘myemail@mydomain.com ‘ уже занято.

В этом есть некоторый смысл… но было бы действительно неплохо, если бы у меня была возможность подключить вход в Twitter к существующей учетной записи… Есть ли какой-либо способ сделать это?

Ответ №1:

Это зависит от вас во внешнем контроллере.Метод обратного вызова в IdentityServer для обработки сопоставления с существующими учетными записями и создания новых учетных записей для новых пользователей.

Например, смотрите этот код:

         // lookup our user and external provider info
        var (user, provider, providerUserId, claims) = FindUserFromExternalProvider(result);
        if (user == null)
        {
            // this might be where you might initiate a custom workflow for user registration
            // in this sample we don't show how that would be done, as our sample implementation
            // simply auto-provisions new external user
            user = AutoProvisionUser(provider, providerUserId, claims);
        }