MVC Owin Identity将多个社交账户链接到单个用户
问题描述:
我有MVC网站,拥有MVC Owin身份登录。 因此,用户可以使用社交网络访问我的网站。 现在我想让用户连接多个社交网络到那里帐户。MVC Owin Identity将多个社交账户链接到单个用户
例如 用户在我的网站上使用Facebook注册。 在注册期间,通过Facebook用户登录连接为他创建了新的本地用户。
现在在用户的个人资料页面上我想添加其他社交活动并显示已经关联的社交活动。
如何使用MVC Owin Identity做到这一点?
答
我的解决方案很简单。 我只是检查用户是否登录并附加新的社交给他。
public async Task<ActionResult> Callback(string provider)
{
var externalLoginInfo = await _applicationSignInManager.AuthenticationManager.GetExternalLoginInfoAsync();
if (externalLoginInfo == null)
{
return RedirectToAction("Index", "SignIn");
}
// Check if the user with this external login provider already has a login
if (await _applicationSignInManager.UserManager.FindAsync(externalLoginInfo.Login) != null) return RedirectToAction("Index", "Social");
await _applicationSignInManager.UserManager.AddLoginAsync(HttpContext.GetOwinContext().Authentication.User.Identity.GetUserId<long>(), externalLoginInfo.Login);
return RedirectToAction("Index", "Social");
}