【问题标题】:get Google Credential throws Unhandled Exception获取 Google 凭据会引发未处理的异常
【发布时间】:2018-02-13 09:55:44
【问题描述】:

在我的 Xamarin.forms 便携式项目中,我正在尝试从 google sheet 读取信息:

using (var stream = this.Assets.Open(@"clientsecret.json"))
            {
                var secrets = GoogleClientSecrets.Load(stream).Secrets;
               //I get the secrets correctly     
     credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            secrets,
            Scopes,
            "user",
            CancellationToken.None,
            new FileDataStore(credPath,true)).Result;
}

我明白了

未处理的异常

System.AggregateException:发生一个或多个错误。

当编译器试图获取凭证时,请记住相同的代码在 Windows 窗体应用程序中运行良好

【问题讨论】:

标签: c# xamarin.forms google-api google-sheets-api google-api-dotnet-client


【解决方案1】:

您似乎在使用Google APIs .Net client library。目前客户端库还没有正式支持 Xamarin

请在此处查看问题Investigate Xamarin support #984 或此问题#840

选项 1:

创建Google APIs .Net client library 的分支并修复您能找到的任何问题。客户端库是开源的,所以这应该是可行的。我相信如果你能正常工作,我们会很乐意接受拉取请求。

选项 2:

创建您自己的库以仅访问工作表 api。这可能是更快的方法,但您需要对 Google oauth 的工作原理有所了解才能做到这一点。

【讨论】:

  • 在 xamarin.forms 中您还有其他可以帮助我的库
  • 据我所知,没有其他库可以做到这一点。我建议您可以获取客户端库的副本并修复它是一个开源项目,因此它应该是可行的。或自己编写(这是我为 .net 3.5 所做的,也不支持。)很抱歉成为坏消息的承担者,这不会是一个简单的解决方案。跨度>
【解决方案2】:

听起来这可能是我在 UWP 应用程序中使用 auth2 时遇到的类似问题。我使用与您的代码相同的身份验证流程,当我使用主流的 Google API .Net 客户端库时,它会在运行时引发异常。就我而言,我能够使用库 v1.31.0 beta 01 的 beta 版本,这让我的 UWP 应用程序和身份验证流程工作正常。从分支来看,神奇的是 beta 库会将 FileDataStore 默认为 UWP 的 PasswordVaultDataStore 对象,这似乎工作正常。还有其他差异,例如 UWP 代码接收器类等,但我还没有真正详细检查过。无论如何,请尝试 beta 库,看看它是否对您有帮助。

【讨论】:

  • 实际上是 Google APIs 客户端库,用于与 Sheets v4 一起使用。支持的平台: - .NET Framework 4.5+ - NetStandard1.3,提供 .NET Core 支持。旧平台:- .NET Framework 4.0 - Windows 8 应用程序 - Windows Phone 8.1 - Windows Phone Silverlight 8.0 不兼容的平台:- .NET Framework
  • 是的,但请检查我提到的测试版块金包。那里的 cmets 有:支持的平台: - .NET Framework 4.5+ - NetStandard1.3,提供.NET Core 支持 - UWP(通用 Windows 平台)
猜你喜欢
  • 2013-01-29
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 2012-09-05
  • 2018-03-15
  • 2017-03-11
  • 2014-03-19
  • 1970-01-01
相关资源
最近更新 更多