У меня есть веб-сайт ASP.NET MVC 5, и я хочу добавить внешний вход через Google, Twitter, Facebook и некоторых других поставщиков. Я следую этому руководству: http://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-и-openid-sign-on
Прямо сейчас я пытаюсь заставить работать вход в Google. Я зарегистрировал свой сайт в Google и получил идентификатор клиента и секрет клиента. Я храню эти два значения в файле PrivateSettings.config, который я храню вне системы контроля версий по соображениям безопасности.
<appSettings>
<add key="GOOGLE_CLIENT_ID" value="<snip>"/>
<add key="GOOGLE_CLIENT_SECRET" value="<snip>"/>
</appSettings>
И я ссылаюсь на свой файл в Web.config
<appSettings file="PrivateSettings.config">
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Мой проект основан на шаблоне, созданном VS2013 при создании этого проекта. Я следовал тому же процессу создания, что и в упомянутом выше руководстве (Индивидуальные учетные записи пользователей), в котором были созданы некоторые классы конфигурации в моей папке App_Start. Я изменил файл Startup.Auth.cs, чтобы добавить поддержку входа в Google, раскомментировав app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
бит и добавив ссылку на идентификатор клиента и секрет клиента, например:
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
{
ClientId = ConfigurationManager.AppSettings["GOOGLE_CLIENT_ID"],
ClientSecret = ConfigurationManager.AppSettings["GOOGLE_CLIENT_SECRET"]
});
Я также включил ssl в свойствах проекта.
Когда я запускаю свое приложение (локально, я его еще не развернул) и пытаюсь войти через Google, используя свою личную учетную запись, процесс входа завершается с ошибкой в методе public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
, в этой строке:
var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);
Выдает Format of the initialization string does not conform to specification starting at index 0
исключение. loginInfo
не является нулевым (проверяется при отладке, плюс есть проверка перед выполнением этой строки, которая перенаправляет, если loginInfo
равна нулю) и содержит мою инфу из гугла (почта, имя).
Любая идея, что может вызвать это?