MVC Owin Identity将多个社交帐户链接到单个用户

时间:2015-04-02 13:35:39

标签: model-view-controller asp.net-identity social-networking owin

我拥有MVC Owin Identity登录的MVC网站。 因此用户可以使用社交网络访问我的网站。 现在我想允许用户将多个社交网络连接到那些帐户。

e.g。 用户在我的网站上使用Facebook注册。 在注册期间,通过Facebook UserLogin连接为他创建了新的本地用户。

现在,在用户的个人资料页面上,我想添加其他社交内容并显示已关联的社交内容。

如何使用MVC Owin Identity做到这一点?

1 个答案:

答案 0 :(得分:1)

我的解决方案很简单。 我只是检查用户是否已登录并为他添加新的社交信息。

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