Я пытаюсь использовать OWIN для внешнего входа в Google / Facebook.
Проблема заключается в том, что проблема owin постоянно меняет тип ответа с токена на код.
Вызов создает следующий URL:
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=client_dim&redirect_uri=mywebsite.com&scope=scope&state=state
Это возвращает ошибку от google. Если я изменяю response_type на token (response_type=token), он работает.
Вот параметры OAuth
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
// In production mode set AllowInsecureHttp = false
AllowInsecureHttp = true,
};
Настройка промежуточного ПО Google:
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
{
ClientId = "clientid",
ClientSecret = "client secret",
});
Вот задача:
var properties = new AuthenticationProperties() { AllowRefresh = true, RedirectUri="mywebsite.co.za" };
Request.GetOwinContext().Authentication.Challenge(properties,LoginProvider);
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
response.RequestMessage = Request;
return Task.FromResult(response);
OWIN-это базовая настройка из универсального проекта MVC API.
Решение для перезаписи response_type в token следующее:
Это по-прежнему вызывает вопрос, если google OAuth 2.0 требует response_type=token, почему Owin.Google provider use response_type=code.