public async Task <ActionResult> Connect(string code = null, string state = null, string error = null) { if (!string.IsNullOrEmpty(error)) { return(View("ConnectError", error)); } if (string.IsNullOrWhiteSpace(code) || string.IsNullOrEmpty(state)) { return(View("ConnectError", (object)"Неверные параметры: отсутствует `code` или `state`")); } string returnUrl; try { returnUrl = OAuth.DecryptState(state); } catch (Exception e) { log.Error($"Can't decode `state`: {e.Message}", e); return(View("ConnectError", (object)"Не смог расшифровать state")); } var userId = User.Identity.GetUserId(); var client = CreateStepikApiClientFromCode(code); await client.RetrieveAccessTokenFromAuthorizationCode(); await stepikRepo.SaveAccessToken(userId, client.AccessToken); return(Redirect(this.FixRedirectUrl(returnUrl))); }