protected override async Task <bool> HandleUnauthorizedAsync(ChallengeContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var properties = new AuthenticationProperties(context.Properties); if (string.IsNullOrEmpty(properties.RedirectUri)) { properties.RedirectUri = CurrentUri; } var tenantOptions = new MultiTenantTwitterOptionsResolver(Options, siteResolver, siteRepo, multiTenantOptions); //var requestToken = await ObtainRequestTokenAsync( // Options.ConsumerKey, // Options.ConsumerSecret, // BuildRedirectUri(Options.CallbackPath), // properties); var requestToken = await ObtainRequestTokenAsync( tenantOptions.ConsumerKey, tenantOptions.ConsumerSecret, BuildRedirectUri(tenantOptions.ResolveRedirectUrl(Options.CallbackPath)), properties); if (requestToken.CallbackConfirmed) { var twitterAuthenticationEndpoint = AuthenticationEndpoint + requestToken.Token; var cookieOptions = new CookieOptions { HttpOnly = true, Secure = Request.IsHttps }; Response.Cookies.Append( tenantOptions.ResolveStateCookieName(StateCookie), Options.StateDataFormat.Protect(requestToken), cookieOptions); var redirectContext = new TwitterRedirectToAuthorizationEndpointContext( Context, Options, properties, twitterAuthenticationEndpoint); await Options.Events.RedirectToAuthorizationEndpoint(redirectContext); return(true); } else { Logger.LogError("requestToken CallbackConfirmed!=true"); } return(false); // REVIEW: Make sure this should not stop other handlers }
internal static Task RedirectToAuthorizationEndpoint(TwitterRedirectToAuthorizationEndpointContext context) { context.Response.Redirect(context.RedirectUri + "&custom_redirect_uri=custom"); return(Task.FromResult(0)); }