У меня возникла проблема с использованием пользовательского OAuth2Client для Google с использованием DotNetOpenAuth и MVC4.
У меня есть точка, где я могу успешно сделать запрос авторизации на конечную точку google https://accounts.google.com/o/oauth2/auth
и Google спрашивает, разрешит ли пользователь доступ к моему аккаунту. Все хорошо до сих пор. Когда пользователь нажимает "ОК", Google затем вызывает мой обратный URL-адрес, как ожидалось.
Проблема заключается в том, что я вызываю метод VerifyAuthentication в классе OAuthWebSecurity (Microsoft.Web.WebPages.OAuth)
var authenticationResult = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
Он всегда возвращает AuthenticationResult с IsSuccessful = false
и Provider = ""
Я просмотрел код для этого, и класс OAuthWebSecurity пытается получить имя поставщика из
Request.QueryString["__provider__"]
но Google не отправляет эту информацию в запрос. Другой поставщик, которого я реализовал (LinkedIn), отправляет имя провайдера обратно, и все работает отлично.
Я не уверен, что я могу сделать с этого момента, кроме отказа от классов Microsoft.Web.WebPages.OAuth и просто использовать DotNetOpenAuth без них, но я надеялся, что у кого-то может быть другое решение, которое я могу попробовать...
Я искал экстенсивно, но не могу найти ничего, чтобы помочь... Мне было очень сложно даже найти примеры людей, делающих то же самое, что меня действительно удивило.
Любая помощь очень ценится!