public async Task <IActionResult> LogInFacebook(string AccessToken) { AccountStatusPair asp = await repository.GetAccountStatus(Request, Response); if (asp.status != AccountStatus.Invalid) { return(RedirectToAction("Index")); } if (AccessToken == null) { return(RedirectToAction("Error")); } Services.FacebookInfo fi = await Services.Facebook.GetFacebookInfo(AccessToken); if (fi.Ok) { AccountResult ar = await repository.LoginAccountFacebook(fi.FacebookId); if (ar.Ok) { repository.SetAccountStatus(Response, ar.CookieId, ar.CookieHash); return(RedirectToAction("Index")); } return(RedirectToAction("Error")); } return(RedirectToAction("Error")); }
public async Task <IActionResult> RegisterFacebookAccount(string Username, string AccessToken) { AccountStatusPair asp = await repository.GetAccountStatus(Request, Response); if (asp.status != AccountStatus.Invalid) { return(RedirectToAction("Index")); } if ((Username == null) || (AccessToken == null)) { return(RedirectToAction("Error")); } Services.FacebookInfo fi = await Services.Facebook.GetFacebookInfo(AccessToken); if (fi.Ok) { Account account = new Account(Username, fi.Email, (Username + AccessToken), fi.FirstName, fi.LastName, fi.Gender); account.Verified = true; account.UseFacebook = true; account.FacebookID = fi.FacebookId; if (await repository.AddAccount(account)) { logger.LogInformation($"User @{account.Username} (ID: {account.Id}) registered with Facebook account (Facebook ID: {account.FacebookID})"); AccountResult ar = await repository.LoginAccountFacebook(fi.FacebookId); if (ar.Ok) { repository.SetAccountStatus(Response, ar.CookieId, ar.CookieHash); return(RedirectToAction("Index")); } return(RedirectToAction("Error")); } } return(RedirectToAction("Error")); }