我有一个ASP.NET MVC 5网站,我想加入通过谷歌,推特,脸谱和其他一些供应商的外部签名。我正在学习本教程:http://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on
现在,我正试着让谷歌登录工作。我在谷歌注册了我的网站,得到了客户的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。
当我启动我的应用程序(在本地,我还没有部署它)并尝试使用我的个人帐户通过谷歌登录时,登录过程在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不是null (调试时选中,再加上在执行此行之前进行检查,如果loginInfo为null),并包含我从谷歌获得的信息(邮件、名称)。
知道是什么导致的吗?
发布于 2014-12-06 17:46:11
解决了。当连接字符串出现问题时,将引发此异常。我正在使用实体框架和MySQL。我必须遵循本教程http://www.codeproject.com/Tips/788357/How-to-set-up-application-using-ASP-NET-Identity-w,以便在MySQL提供者中启用ASP.NET标识。现在,谷歌-OAuth和传统的注册和登录同样有效。
https://stackoverflow.com/questions/27313361
复制相似问题