我正在尝试连接到BigQuery项目并使用BigqueryService实例获取数据集列表。我可以使用BigQueryClient成功完成此操作;但是,我需要使用BigqueryService。我想念什么?
static void Main(string[] args)
{
GoogleCredential credential;
BigqueryService service;
string query;
using (var json = new FileStream("secretkey.json", FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(json);
service = new BigqueryService(new BaseClientService.Initializer
{
ApplicationName = "BigQueryTest",
HttpClientInitializer = credential
});
}
try
{
var serviceList = service.Datasets.List("testproject").Execute();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
var client = BigQueryClient.Create("testproject", credential);
var clientList = client.ListDatasets();
Console.ReadKey();
}
在运行时,我遇到一个异常,说Service.Datasets.List()的“请求具有无效的身份验证凭据...”,但是client.ListDatasets()的运行没有问题。
编辑: 我解决了这个问题。我需要使用GoogleCredential.CreateScoped()创建我的凭据。工作代码:
credential = GoogleCredential.FromStream(json);
string[] scopes = new string[] { BigqueryService.Scope.Bigquery
};
credential = credential.CreateScoped(scopes);
service = new BigqueryService(new BaseClientService.Initializer
{
ApplicationName = "BigQueryTest",
HttpClientInitializer = credential
});