Я получаю localhost (номер порта): // signin-google? State = blahblahblah ... после завершения процесса входа в Google.
Ниже приведена основная точка входа, откудаAPI запускается.
static void Main(string[] args)
{
using (var app = WebApp.Start<Startup>("http://localhost:8090"))
{
Process.Start("http://localhost:8090/api");
Console.WriteLine("Close this window to stop this server");
Console.ReadLine();
}
}
Ниже приведен код моего класса startup.cs
public void Configuration(IAppBuilder app)
{
var cookieOpts = new CookieAuthenticationOptions
{
LoginPath = new PathString("/account/login"),
CookieSecure = CookieSecureOption.SameAsRequest
};
app.UseCookieAuthentication(cookieOpts);
app.SetDefaultSignInAsAuthenticationType(cookieOpts.AuthenticationType);
var googleOpts = new GoogleOAuth2AuthenticationOptions
{
ClientId = "XXXXXXXXX",
ClientSecret = "XXXXXXXXX"
};
app.UseGoogleAuthentication(googleOpts);
var config = new HttpConfiguration();
config.Services.Replace(typeof(IHttpControllerTypeResolver), new ControllerResolver());
config.MapHttpAttributeRoutes();
app.UseWebApi(config);
}
Контроллер, с которого выполняется страница входа в систему Google, -
[RoutePrefix("account"), AllowAnonymous]
public class AccountController : ApiController
{
[HttpGet, Route("login")]
public IHttpActionResult Login(string returnUrl)
{
var authProps = new AuthenticationProperties
{
RedirectUri = returnUrl
};
Request.GetOwinContext().Authentication.Challenge(authProps, "Google");
return StatusCode(HttpStatusCode.Unauthorized);
}
[HttpGet, Route("logoff")]
public IHttpActionResult Logout()
{
Request.GetOwinContext().Authentication.SignOut();
return Ok();
}
}
Контроллер, для которого я использую авторизацию Google:
[RoutePrefix("api"), Authorize]
public class DefaultController : ApiController
{
[HttpGet, Route("")]
public IHttpActionResult Get()
{
return Ok("Hello, world!");
}
}
Все отлично работает 1. Когда приложение запускается, оно проверяет логин Google 2. Если нет, оно будет перенаправлено на страницу входа в Google 3. после входа в системув Google он перенаправляет обратно на localhost (номер порта): // signin-google? state = blahblahblah ..
Я думаю, он должен перенаправить на фактический API - в моем случае он должен иметь http://localhost:portnumer:/api
Ниже приведен файл захвата трассировки для быстрого ознакомления - Trace-log-is-here
Заранее спасибо ..:)
Исходный код - https://github.com/BDChaudhari90/OAuthGoogleSelfHost