2014-12-05 41 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注册了我的网站,并获得了客户端ID和客户端密码。我将这两个值保留在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文件添加支持谷歌登录,通过取消注释app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()位并添加参考客户端ID和客户端密钥,就像这样:

app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() 
{ 
    ClientId = ConfigurationManager.AppSettings["GOOGLE_CLIENT_ID"], 
    ClientSecret = ConfigurationManager.AppSettings["GOOGLE_CLIENT_SECRET"] 
}); 

我也启用了SSL在项目属性。

当我启动我的应用程序(本地,我还没有部署它尚未),并尝试使用我的个人帐户通过谷歌进行登录,在登录过程中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为空,则在执行该行之前会执行重定向),并包含来自Google(邮件,名称)的信息。

任何想法可能导致这种情况?

回答

相关问题