使用BigqueryService时出现身份验证错误

时间:2019-07-03 20:00:57

标签: c# google-bigquery

我正在尝试连接到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
});

0 个答案:

没有答案