使用 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);
}
使用 .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);
}