public async Task <TokenModel> LoginWithFacebook(FacebookTokenViewModel facebookToken) { FacebookUserCredentialsResponse facebookResponse = await facebookApiManager.GetUserCredentials(facebookToken.FacebookToken); if (facebookResponse.email != null) { ApplicationUser user = await applicationUserManager.GetUserByEmail(facebookResponse.email); if (user == null) { user = await CreateUser(facebookResponse); } return(GetToken(user)); } throw new Exception("Facebook not returned email address"); }
private async Task <ApplicationUser> CreateUser(FacebookUserCredentialsResponse facebookResponse) { ApplicationUser user = new ApplicationUser { UserName = facebookResponse.email, Email = facebookResponse.email }; IdentityResult result = await applicationUserManager.CreateAsync(user); if (result.Succeeded) { IdentityResult loginInfoResult = await applicationUserManager.AddLoginAsync(user, new UserLoginInfo("Facebook", facebookResponse.id, facebookResponse.name)); if (!loginInfoResult.Succeeded) { throw new Exception("Creating new user failed"); } } else { throw new Exception("Creating new user failed"); } return(user); }