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