在我的 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窗体应用程序中正常工作
答案 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库,看看它是否对您的情况有所帮助。