我有一个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(邮件,名称)的信息。
任何想法可能导致这种情况?