反序列化 JSON 凭证数据 C# Google 工作表 API 时出错
Error deserializing JSON credential Data C# Google Sheets API
我目前正在尝试使用服务帐户访问 GoogleSheets API - 我遇到的问题是我的 .json 文件。
这是我的代码:
try
{
string[] scopes = new string[] { SheetsService.Scope.Spreadsheets, SheetsService.Scope.SpreadsheetsReadonly }; // Put your scopes here
var stream = new FileStream("my_application_secret.json", FileMode.Open, FileAccess.Read);
var credential = GoogleCredential.FromStream(stream);
credential = credential.CreateScoped(scopes);
SheetsService service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "myApplication",
});
return service;
}
catch (Exception ex)
{
Console.WriteLine("Create service account myApplicationServiceAccount failed : " + ex.Message);
throw new Exception("Create ServiceAccount Failed : ", ex);
}
这引发了我的错误:
Create service account myApplicationServiceAccount failed : Error deserializing JSON credential data.
但我在网上找到的所有内容都表明我上面的内容应该有效。
我还需要处理此 .json 文件吗?
尝试使用 Newtonsoft.Json
库反序列化对象
http://www.newtonsoft.com/json
return Newtonsoft.Json.JsonConvert.DeserializeObject<SheetsService>(service);
但错误是在反序列化 JSON 凭据数据时,所以这可能会有所帮助:
credential = Newtonsoft.Json.JsonConvert.DeserializeObject<credential.CreateScoped>(scopes);
您可以查看此 related GitHub thread。给定的解决方法是:
install-package Microsoft.Bcl.Build
install-package Microsoft.Bcl.Async
install-package Microsoft.Net.Http
此外,您可以在 C# 中关注此 tutorial 关于 JSON Serialization/Deserialization 的内容,看看您是否遗漏了什么。
事实证明 - 因为我支持旧版本的 .NET(4 及以下版本),所以我使用的是 Google 工作表 API.[=10= 的稍旧版本]
但是 Newtonsoft.JSON 软件包也已过时。更新了它,现在可以使用了。
我目前正在尝试使用服务帐户访问 GoogleSheets API - 我遇到的问题是我的 .json 文件。
这是我的代码:
try
{
string[] scopes = new string[] { SheetsService.Scope.Spreadsheets, SheetsService.Scope.SpreadsheetsReadonly }; // Put your scopes here
var stream = new FileStream("my_application_secret.json", FileMode.Open, FileAccess.Read);
var credential = GoogleCredential.FromStream(stream);
credential = credential.CreateScoped(scopes);
SheetsService service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "myApplication",
});
return service;
}
catch (Exception ex)
{
Console.WriteLine("Create service account myApplicationServiceAccount failed : " + ex.Message);
throw new Exception("Create ServiceAccount Failed : ", ex);
}
这引发了我的错误:
Create service account myApplicationServiceAccount failed : Error deserializing JSON credential data.
但我在网上找到的所有内容都表明我上面的内容应该有效。
我还需要处理此 .json 文件吗?
尝试使用 Newtonsoft.Json
库反序列化对象
http://www.newtonsoft.com/json
return Newtonsoft.Json.JsonConvert.DeserializeObject<SheetsService>(service);
但错误是在反序列化 JSON 凭据数据时,所以这可能会有所帮助:
credential = Newtonsoft.Json.JsonConvert.DeserializeObject<credential.CreateScoped>(scopes);
您可以查看此 related GitHub thread。给定的解决方法是:
install-package Microsoft.Bcl.Build
install-package Microsoft.Bcl.Async
install-package Microsoft.Net.Http
此外,您可以在 C# 中关注此 tutorial 关于 JSON Serialization/Deserialization 的内容,看看您是否遗漏了什么。
事实证明 - 因为我支持旧版本的 .NET(4 及以下版本),所以我使用的是 Google 工作表 API.[=10= 的稍旧版本]
但是 Newtonsoft.JSON 软件包也已过时。更新了它,现在可以使用了。