使用 IdentityServer4 和 Twitter 登录是否可以连接现有帐户?

With IdentityServer4 and Twitter sign in is there a way to connect an existing account?

使用 .Net Core 3.1 和 IdentityServer4,我已经成功设置了 Twitter 登录。

但是,如果我已经使用相同的电子邮件地址(独立于 Twitter)创建了一个帐户...当我单击使用 Twitter 登录时,它会将我重定向回身份服务器外部登录页面,并显示以下消息:

您已成功通过 Twitter 进行身份验证。请在下面输入此站点的电子邮件地址,然后单击“注册”按钮完成登录。

还有一个文本框,其中已经填写了我的 Twitter 电子邮件地址:[ myemail@mydomain.com ]

当我单击“注册”时,我收到错误消息:

用户名'myemail@mydomain.com'已被占用。

这有一定的道理......但如果我可以选择将 Twitter 登录连接到现有帐户,那就太好了......有什么办法可以做到这一点吗?

由您在 IdentityServer 的 ExternalController.Callback 方法中处理现有帐户的映射并为新用户创建新帐户。

例如看这段代码:

        // 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);
        }