获取Google Credential会抛出未处理的异常

时间:2018-02-13 09:55:44

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

在我的 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窗体应用程序中正常工作

2 个答案:

答案 0 :(得分:2)

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

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

选项1:

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

选项2:

创建自己的库,只访问工作表api。这可能是更快的方式,但您需要了解Google oauth如何运作才能实现这一目标。

答案 1 :(得分:0)

听起来这可能是我在UWP应用中与auth2面临的类似问题。我根据你的代码使用相同类型的auth流程,当我使用主流的Google API .Net Client库时,它会在运行时引发异常。在我的情况下,我能够使用库v1.31.0 beta 01的beta版本,这使我的UWP应用程序和auth流程正常工作。通过查看分支,神奇的是beta库将FileDataStore默认为UWP的PasswordVaultDataStore对象,这似乎工作正常。还有其他差异,如UWP代码接收器类等,但我还没有真正详细检查过。尽管它值得,但请尝试使用beta库,看看它是否对您的情况有所帮助。