2014-12-05 81 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(郵件,名稱)的信息。

任何想法可能導致這種情況?

回答