如何使用Google Cloud客户端库进行基于API密钥的REST调用

sathishvj:

我正在尝试使用Golang中的API密钥对Google Cloud Vision API进行API调用。但是我得到一个400: bad request, invalid_grant error

以下代码的apiKey / apiKeyOption部分是我的。

拨打电话的正确方法是什么?有可能吗?

import (
    // ...
    "google.golang.org/api/option"
    vision "cloud.google.com/go/vision/apiv1"
    "golang.org/x/net/context"
)

func getImageLabels(filename string) []string {

    ctx := context.Background()

    apiKey := "..." // I have a valid api key generated in the console.
    apiKeyOption := option.WithAPIKey(apiKey)

    client, err := vision.NewImageAnnotatorClient(ctx, apiKeyOption)

    // ...
    labels, err := client.DetectLabels(ctx, image, nil, 10)

}

...

Failed to detect labels: rpc error: code = Internal desc = transport: oauth2: cannot fetch token: 400 Bad Request
Response: {
  "error" : "invalid_grant"
}
dsesto:

根据我在用于Golang的Google Cloud客户端库的官方文档(在GitHubGolang文档中)中找到的内容,当前支持的身份验证方法是Google Application Default CredentialsService Accounts,因此没有这样的选项可以使用API密钥。

但是,正如文档中指出的那样出于安全原因,Google建议使用服务帐户而不是API密钥,因此,如果可以的话,我建议您选择该选项。

在调用不需要身份验证的Google API以及使用Google Cloud Endpoints时,可以使用API​​密钥。出于安全原因,我们建议改为使用服务帐户

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用JIRA的REST客户端库?

如何使用Java的Google Translate v2 API客户端库提出翻译请求?

使用客户端Javascript时如何使API密钥保密?

如何使用Java的Google API客户端库检索youtube缩略图

为什么Google API客户端库不基于Apache的Abdera框架构建?

使用服务帐户对Golang中的Cloud Function的客户端调用进行身份验证

如何使用spring-ws客户端使用不同的密钥库调用相同的Web服务

如何从AngularJS安全地将apiKey /客户端密钥传递给REST API

如何使用swagger从wp rest api生成Retrofit客户端库

验证服务帐户以使用JavaScript客户端库调用Google API

如何根据客户端调用使用许多数据库实现Web API

gRPC / proto Google Cloud客户端库与GAPIC Google Cloud客户端库

如何使用Google API客户端创建Python代码

Google凭据API密钥/ OAUTH客户端ID限制

如何使用客户端库将格式传递给Google Cloud Translation API?

如何使用服务帐户凭据初始化Google Cloud Storage NodeJS客户端库

使用Python客户端库进行gcp计算API使用什么以及如何传递凭据

如何从外部客户端使用Google Kubernetes Engine中的Jenkins API Rest

如何为PHP的Google API客户端库生成API /开发人员密钥

Twitter Finagle客户端:如何进行外部REST api调用?

如何在Qt的Android客户端代码中调用Google-Cloud-Messaging API?

如何防止客户端REST API调用阻止/使用Jersey优先处理某些API调用

通过Gradle使用“ Java的Google Cloud Datastore API客户端库”

如何使用OAuth 2.0实施REST API以进行多个客户端访问

如何使用Discoveryapis_generator为我的Google Cloud Endpoints API生成Dart客户端库?

如何使用 OAuth 2.0 客户端 ID 调用 Google Drive API?

谷歌应用引擎灵活 - 如何使用客户端库或 REST API 启动现有版本

使用客户端 ID 和密钥对 Azure Dev Ops 服务客户端库进行身份验证

如何使用客户端 ID 和客户端密钥在 C# .NET Framework 中使用 SharePoint Rest API?