2015-02-24 56 views
0

我一直試圖通過OAuth2向Google服務添加身份驗證到我正在處理的桌面(C#,WPF)應用程序。我正在使用Google通過nuGet提供的OAuth 2.0 C#庫,並且我已經在Google's site上的示例中對我的代碼進行了建模。我的登錄代碼如下所示:使用Google的OAuth2庫時,不支持給定路徑格式

Task<UserCredential> loginTask = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets { ClientId = ClientId, ClientSecret = ClientSecret }, 
new[] { BloggerService.Scope.Blogger }, 
cmbUser.SelectedItem.ToString(), 
CancellationToken.None, 
new FileDataStore("Blogger.Auth")); 

每當我執行該代碼時,我的瀏覽器就會出現並要求我登錄Google。但是,這樣做後,該行將引發System.AggregateException。深入挖掘內部異常,它看起來像核心的問題是這樣的:

InnerException: System.NotSupportedException 
    HResult=-2146233067 
    Message=The given path's format is not supported. 
    Source=Microsoft.Threading.Tasks 
    StackTrace: 
     at Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
     at Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task) 
     at Microsoft.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) 
     at Microsoft.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 
     at Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.<AuthorizeAsync>d__1.MoveNext() in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\test\default\Src\GoogleApis.Auth.DotNet4\OAuth2\GoogleWebAuthorizationBroker.cs:line 59 
    InnerException: 

我試着在網上搜索,但我還沒有見過任何人碰到這個問題與運行的OAuth2。有沒有人有任何想法可能會導致此錯誤,以及如何解決它?

更多的細節 - 我的應用程序是使用.NET框架4.5。對於授權,我使用的是Google.Apis.Auth 1.9版。

+0

FileDataStore將憑據存儲在%appData%目錄中我不知道它是否與此有關。嘗試將其更改爲localfiledatastore,例如https://github.com/LindaLawton/Google-Dotnet-Samples/blob/master/Authentication/Diamto.Google.Authentication/Diamto.Google.Authentication/LocalFileDataStore%20.cs,或者可能更快只需刪除filedatastore並在不保存數據存儲的情況下進行測試。 – DaImTo 2015-02-24 13:15:13

+0

不行 - 我只是嘗試沒有數據存儲和FileDataStore,我得到了同樣的錯誤。 – Scott 2015-02-25 01:02:30

回答

0

我想出了這個問題。對於用戶名,我使用了cmbUser.SelectedItem.ToString()。這組合框有一堆ListBoxItems控股的電子郵件地址,當的ToString()被調用的其中之一,這樣的值將返回:

"System.Windows.Controls.ListBoxItem: [email protected]" 

該字符串有沒有在路徑的有效字符,所以我得到了無效路徑異常。

我能夠通過獲取ListBoxItem的內容屬性來解決這個問題,它只是返回了電子郵件地址。

相關問題