2015-02-24 53 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的内容属性来解决这个问题,它只是返回了电子邮件地址。

相关问题