Google BigQuery 服务帐户凭据在 C# 应用程序中使用 JSON 文件

Google BigQuery Service Account Credentials using JSON file in C# application

在为 Google BigQuery 创建服务帐户时,有两种关键文件类型。 1. P12 密钥文件 2. JSON 密钥文件.

我可以通过以下代码使用 P12 密钥文件将 Google BigQuery 与服务帐户凭据连接起来。

String serviceAccountEmail = "XXXX@developer.gserviceaccount.com";

            var certificate = new X509Certificate2(@"FileName.p12", "Secret Key", X509KeyStorageFlags.Exportable);

            ServiceAccountCredential credential = new ServiceAccountCredential(
               new ServiceAccountCredential.Initializer(serviceAccountEmail)
               {
                   Scopes = new[] { BigqueryService.Scope.Bigquery, BigqueryService.Scope.BigqueryInsertdata, BigqueryService.Scope.CloudPlatform, BigqueryService.Scope.DevstorageFullControl }
               }.FromCertificate(certificate));

            BigqueryService Service = new BigqueryService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "PROJECT NAME"
            });

现在我正在尝试使用 JSON 文件类型连接服务帐户凭据,但我无法获得正确的创建语法。

我们如何使用 JSON 文件将 Google BigQuery 与服务帐户凭据连接起来?

谢谢,

我得到了 link,这表明 C# 应用程序中使用 JSON 文件的服务帐户身份验证尚未添加到 Google BigQuery API 中,所以我想结束这个问题。

https://github.com/google/google-api-dotnet-client/issues/533

现在可以(我使用了 Google API 的 v 1.13.1.0)。

GoogleCredential credential;
using (Stream stream = new FileStream(@"C:\mykey.json", FileMode.Open, FileAccess.Read, FileShare.Read))
{
    credential = GoogleCredential.FromStream(stream);
}

string[] scopes = new string[] {
    BigqueryService.Scope.Bigquery,
    BigqueryService.Scope.CloudPlatform, 
};
credential = credential.CreateScoped(scopes);

BaseClientService.Initializer initializer = new BaseClientService.Initializer()
{
    HttpClientInitializer = (IConfigurableHttpClientInitializer)credential,
    ApplicationName = "My Application",
    GZipEnabled = true,
};
BigqueryService service = new BigqueryService(initializer);