public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model)
        {
            if (User.Identity.IsAuthenticated)
                return RedirectToRole();

            if (ModelState.IsValid)
            {
                var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

                if (loginInfo == null)
                    return View("ExternalLoginFailure");

                string pictureUrl = "/img/profiles/default.png";
                char? gender = null;
                string genderValue = loginInfo.ExternalIdentity.FindFirstValue(ClaimTypes.Gender);
                if (genderValue != null)
                    gender = genderValue.First();

                if (loginInfo.Login.LoginProvider == "Google")
                {
                    string url = loginInfo.ExternalIdentity.FindFirstValue("picture");
                    if (!string.IsNullOrEmpty(url))
                        pictureUrl = HtmlHelpers.ResizeGoogleProfilePicture(url, 200);
                }
                else if(loginInfo.Login.LoginProvider == "Facebook")
                {
                    var profileId = loginInfo.ExternalIdentity.FindFirstValue(ClaimTypes.NameIdentifier);
                    if (profileId != null)
                        pictureUrl = string.Format("https://graph.facebook.com/{0}/picture?width=200&height=200", profileId);
                }

                var AppMember = new AppMember {
                    UserName = model.Email,
                    Email = model.Email,
                    FirstName = model.FirstName,
                    LastName = model.LastName,
                    PictureUrl = pictureUrl,
                    Gender = gender
                };

                var result = await userManager.CreateAsync(AppMember);

                if (result.Succeeded)
                {
                    result = await userManager.AddLoginAsync(AppMember.Id, loginInfo.Login);
                    if (result.Succeeded)
                    {
                        await userManager.AddToRoleAsync(AppMember.Id, "Autor");
                        await signInManager.SignInAsync(AppMember, isPersistent: false, rememberBrowser: false);
                        return RedirectToLocal(model.ReturnUrl);
                    }
                }

                AddError("Email", Translations.Account.AlreadyRegisteredAccount);
            }

            return View(model);
        }
        public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
        {
            var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

            if (loginInfo == null)
                return RedirectToAction("Login");

            string provider = loginInfo.Login.LoginProvider;

            //Active Directory
            var tenantId = loginInfo.ExternalIdentity.FindFirstValue("http://schemas.microsoft.com/identity/claims/tenantid");
            if (tenantId != null)
            {
                if (tenantId == "af2fd196-1d9f-47b4-9069-391a46f83601")
                {
                    loginInfo.Email = loginInfo.DefaultUserName;
                    provider = "UNITEC";
                }
                else if (tenantId == "c02b08b6-4ca2-448d-8743-12973eb499ff")
                    provider = "Microsoft";
            }

            // Sign in the AppMember with this external login provider if the AppMember already has a login
            var result = await signInManager.ExternalSignInAsync(loginInfo, isPersistent: false);

            switch (result)
            {
                case SignInStatus.Success:
                    return RedirectToLocal(returnUrl);
                case SignInStatus.LockedOut:
                    return View("Lockout");
                case SignInStatus.RequiresVerification:
                    return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false });
                case SignInStatus.Failure:
                default:
                    var model = new ExternalLoginConfirmationViewModel();
                    model.Email = loginInfo.Email ?? string.Empty;
                    model.FirstName = HtmlHelpers.CapitalizeString(loginInfo.ExternalIdentity.FindFirstValue(ClaimTypes.GivenName));
                    model.LastName = HtmlHelpers.CapitalizeString(loginInfo.ExternalIdentity.FindFirstValue(ClaimTypes.Surname));
                    model.LoginProvider = provider;
                    model.ReturnUrl = returnUrl;
                    return View("ExternalLoginConfirmation", model);
            }
        }