【问题标题】:Ho to Invoke GCP DocumentAI API from App Engine .net service如何从 App Engine .net 服务调用 GCP Document AI API
【发布时间】:2020-05-06 04:46:51
【问题描述】:

我有一个需要使用 GCP Document AI API 的 .netcore GCP App Engine 服务。不幸的是,还没有 .netcore 客户端可以访问 Document AI API,所以我想我需要使用 API Rest 调用来访问。现在的问题是如何获取访问令牌以在请求中设置授权标头。

有什么帮助吗?

【问题讨论】:

  • 能否请您查看Google documentation 的身份验证策略?根据您的应用程序需要什么以及它运行的位置,您应该选择适当的策略。

标签: google-cloud-platform artificial-intelligence


【解决方案1】:

我发现了两种不同的方式:

第一个:只需编写一个简单的 NodeJS 应用引擎服务(或 java 或 python,因为 Document AI 目前为这 3 种语言提供客户端库)充当 .netcore 服务和 Document AI api 之间的代理。

第二个:在CGP项目中创建一个Api Key,作为.netcore服务中的环境变量抓取。然后,只需将 api 密钥作为查询参数发送和 http post 到 url,如下所示:

https://eu-documentai.googleapis.com/v1beta2/projects/{YOUR_PROJECT_ID}/locations/eu/documents:process?key={API_KEY}

就是这样。

关于第二个,我宁愿不必使用 ApiKey。我想知道诸如nodejs之类的客户端库如何在没有ApiKey的情况下将请求发送到DocumentAI api。在我的第一次尝试中,我希望使用 GCP 服务帐户凭据中的 HttpClient 可以解决问题,但是我收到了 403 错误,指出缺少 api 密钥。我所做的是:

var cred = GoogleCredential.GetApplicationDefault()
var credential = cred.UnderlyingCredential as ServiceAccountCredential;
var uri = new Uri($"https://eu-documentai.googleapis.com/v1beta2/projects/{YOUR_PROJECT_ID}/locations/eu/documents:process;
var responseMessage = await credential.HttpClient.PostAsJsonAsync(uri, config);
var response = await responseMessage.Content.ReadAsStringAsync();

如前所述,这会产生 403 错误,抱怨缺少 ApiKey。使用 ApiKey 时,您可以使用常规 HttpClient,不需要使用为 Google Credential 创建的 HttpClient

【讨论】:

    【解决方案2】:

    有一个测试版,您可以获得以下 Nuget 包:Google.Cloud.DocumentAI.V1Beta2(根据今天)。

    添加引用和使用:

    using Google.Cloud.DocumentAI.V1Beta2;
    

    然后你可以像其他云组件一样做类似的事情,构建一个服务客户端并使用它,就像这样简单:

    var client = new DocumentUnderstandingServiceClientBuilder {
        CredentialsPath = "google-credentials.json"
    }.Build();
    

    然后,您可以根据需要使用客户端。

    关于 google-credentials.json 文件,您可以找到所有信息here。 简而言之:将您的凭据放入一个文件并创建一个名为“GOOGLE_APPLICATION_CREDENTIALS”的环境变量以指向该文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-25
      • 2020-11-01
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 2020-10-10
      相关资源
      最近更新 更多