使用Google OAuth登录时的字符串格式异常

时间:2014-12-05 10:06:00

标签: c# asp.net oauth-2.0 google-oauth

我有一个ASP.NET MVC 5网站,我想通过谷歌,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登录工作。我在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文件以添加对Google登录的支持,取消注释app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()位并添加对客户端ID和客户端密钥的引用,如下所示:

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为空,则重定向)并包含来自Google的信息(邮件,名称)。

知道可能导致这种情况的原因吗?

1 个答案:

答案 0 :(得分:2)

解决。当连接字符串出现问题时,抛出此异常。我正在使用Entity Framework和MySQL。我必须按照本教程http://www.codeproject.com/Tips/788357/How-to-set-up-application-using-ASP-NET-Identity-w启用ASP.NET提供程序的ASP.NET身份。现在Google-OAuth正常运作,传统注册和登录也是如此。