GoogleWebAuthorizationBroker在C#中引发异常

时间:2013-12-22 06:47:44

标签: c# windows-8 google-api oauth-2.0 google-api-dotnet-client

我正在尝试使用Windows 8应用中的OAuth与Google进行身份验证。我正在使用Google .NET客户端API,遵循此tutorial。但是,当我使用GoogleWebAuthorizationBroker类时,我不断收到异常。

我的代码是从链接教程中复制/粘贴的。 client_secrets.json包含我从Google API控制台下载的文件。我确实检查它是否已复制到已安装的应用程序,我可以打开它。 Calendar API已开启。

UserCredential credidential = null;    
credidential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                        new Uri("ms-appx:///Assets/client_secrets.json"),
                        new[] { Uri.EscapeUriString(CalendarService.Scope.Calendar) },
                        "user", CancellationToken.None);

围绕try / catch中的这一行告诉我它因以下原因而失败:

  

System.AggregateException:发生了一个或多个错误。 ---&GT;   System.Exception:进程意外终止。 (例外   HRESULT:0x8007042B)at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   System.Runtime.CompilerServices.TaskAwaiter 1.GetResult() at Google.Apis.Auth.OAuth2.AuthorizationCodeBroker.<ReceiveCodeAsync>d__10.MoveNext() in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\output\default\Src\GoogleApis.Auth.WinRT\OAuth2\AuthorizationCodeBroker.cs:line 69 --- End of inner exception stack trace --- 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()   在   Google.Apis.Auth.OAuth2.AuthorizationCodeInstalledApp.d__0.MoveNext()   在   C:\代码\ google.com \ Google处理API-DOTNET客户端\默认\工具\ Google.Apis.Release \ BIN \调试\输出\默认\ SRC \ GoogleApis.Auth \的OAuth2 \ AuthorizationCodeInstalledApp.cs:线   74   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   System.Runtime.CompilerServices.ConfiguredTaskAwaitable 1.ConfiguredTaskAwaiter.GetResult() at Google.Apis.Auth.OAuth2.AuthorizationCodeWinRTInstalledApp.<AuthorizeAsync>d__0.MoveNext() in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\output\default\Src\GoogleApis.Auth.WinRT\OAuth2\AuthorizationCodeWinRTInstalledApp.cs:line 65 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable 1.ConfiguredTaskAwaiter.GetResult()   在   Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__6.MoveNext()   在   C:\代码\ google.com \ Google处理API-DOTNET客户端\默认\工具\ Google.Apis.Release \ BIN \调试\输出\默认\ SRC \ GoogleApis.Auth.WinRT \的OAuth2 \ GoogleWebAuthorizationBroker.cs:线   73   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   System.Runtime.CompilerServices.ConfiguredTaskAwaitable 1.ConfiguredTaskAwaiter.GetResult() at Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.<AuthorizeAsync>d__0.MoveNext() in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\output\default\Src\GoogleApis.Auth.WinRT\OAuth2\GoogleWebAuthorizationBroker.cs:line 48 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter 1.GetResult()   在kk_youtube_metro.GroupedItemsPage.d__5.MoveNext()中   c:\ Users \ Karol \ Documents \ Visual Studio   2012 \项目\ KK-的YouTube,地铁\ KK-的YouTube,地铁\ GroupedItemsPage.xaml.cs:行   68   ---&GT; (内部异常#0)System.Exception:进程意外终止。 (来自HRESULT的异常:0x8007042B)at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()   在   Google.Apis.Auth.OAuth2.AuthorizationCodeBroker.d__10.MoveNext()   在   C:\代码\ google.com \ Google处理API-DOTNET客户端\默认\工具\ Google.Apis.Release \ BIN \调试\输出\默认\ SRC \ GoogleApis.Auth.WinRT \的OAuth2 \ AuthorizationCodeBroker.cs:线   69&LT; ---

我错过了什么?

2 个答案:

答案 0 :(得分:1)

pelayal在问题评论中发布的link提供了解决方案。我的个人资料有问题。创建一个新帐户修复它。

答案 1 :(得分:1)

检查上面

  • 安装包Microsoft.Bcl.Async
  • 并使用您的应用程序部署他们的dll