我一直在尝试通过OAuth2向Google服务添加身份验证到我正在处理的桌面(C#,WPF)应用程序。我正在使用谷歌通过nuGet提供的OAuth 2.0 C#库,我在Google's site上的示例中对我的代码进行了建模。我的登录代码如下所示:
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 framework 4.5。对于授权,我使用的是Google.Apis.Auth版本1.9。
答案 0 :(得分:0)
我弄明白了这个问题。对于用户名,我使用的是cmbUser.SelectedItem.ToString()。该组合框有一堆ListBoxItems保存电子邮件地址,当其中一个调用ToString()时,会返回这样的值:
"System.Windows.Controls.ListBoxItem: email@domain.com"
该字符串包含在路径中无效的字符,因此我收到了无效路径异常。
我能够通过获取ListBoxItem的content属性来修复此问题,该属性刚刚返回了电子邮件地址。