2014-12-05 3 views
1

У меня есть веб-сайт 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-and-openid-sign-onИсключение формата строки при использовании знака Google OAuth в

Прямо сейчас, я пытаюсь заставить 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 - null) и содержит мою информацию от Google (почта, имя).

Любая идея, что может вызвать это?

ответ

2

Решено. Это исключение возникает при возникновении проблемы в строке соединения. Я использую Entity Framework и MySQL. Я должен был следовать этому руководству http://www.codeproject.com/Tips/788357/How-to-set-up-application-using-ASP-NET-Identity-w, чтобы включить идентификатор ASP.NET с поставщиком MySQL. Теперь работает Google-OAuth, а также традиционная регистрация и вход в систему.

Смежные вопросы