В настоящее время я обновляю свой процесс регистрации для Google, чтобы использовать OAuth, прежде чем они лишают их метода входа OpenID.
Действия, которые я определил до сих пор, это то, что я обновил пакет Microsoft.Owin.Security.Google до версии 2.1.0, так как эта версия включает возможность включения параметров в метод UseGoogleAuthentication.
Я попытался использовать решение Alex Wheat в ссылке: Получить дополнительные данные из структуры MVC5 OAuth/OWin поставщика удостоверений с внешним поставщиком авторизации
Код в Startup.Auth.cs(который также включает аутентификацию Facebook):
var facebookAuthenticationOptions = new FacebookAuthenticationOptions()
{
AppId = "MYAPPID",
AppSecret = "MYSECRET"
};
facebookAuthenticationOptions.Scope.Add("email");
app.UseFacebookAuthentication(facebookAuthenticationOptions);
app.UseGoogleAuthentication();
Для этого:
var facebookAuthenticationOptions = new FacebookAuthenticationOptions()
{
AppId = "MYAPPID",
AppSecret = "MYSECRET"
};
facebookAuthenticationOptions.Scope.Add("email");
app.UseFacebookAuthentication(facebookAuthenticationOptions);
var googleOAuth2AuthenticationOptions = new GoogleOAuth2AuthenticationOptions
{
ClientId = "MYCLIENTID",
ClientSecret = "MYSECRET",
CallbackPath = new PathString("/en/Account/ExternalLoginCallback"),
Provider = new GoogleOAuth2AuthenticationProvider()
{
}
};
app.UseGoogleAuthentication(googleOAuth2AuthenticationOptions);
После добавления параметров в Аутентификацию Google мое приложение не позволяет вызывать действие ExternalLoginCallback для google или facebook (никаких изменений в коде facebook, но проблема все равно влияет на него).
На переднем конце после нажатия внешних кнопок входа страница перенаправляет меня по ссылке ниже и возвращает пустой белый экран
https....../ru/Account/ExternalLoginCallback # __ = _ (Фактически только один знак подчеркивания перед символом =, синтаксис SO удаляет его, если он у меня есть, как он отображается в моей адресной строке).
для facebook и
HTTPS....../EN/Account/ExternalLoginCallback
для google. Это не влияет на метод контроллера ниже, как обычно (я попытался разместить точки останова отладки внутри этой функции и никогда не останавливается при наличии параметров проверки подлинности Google.
// GET: /Account/ExternalLoginCallback
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
Если я удалю параметры проверки подлинности из Google Authentication, он просто вернется к старой учетной записи OpenID и снова отлично работает.
Я пропустил что-то простое здесь? или есть что-то плохое в библиотеке Owin.Security.Google, которая вызывает проблему?