Google翻译API WithAPIKey选项错误



我正在Golang构建一个多语言SAAS网站生成器,该生成器按客户端运行。每个客户都可以拥有自己的网站,并可以将其网站翻译成所需的语言。

由于该功能是针对每个客户端的,所以我从客户端收集了一个API密钥,用于翻译他们的网站内容。

这是代码,

V2

package main
import (
"context"
"fmt"
"cloud.google.com/go/translate"
"google.golang.org/api/option"
)
func main() {
translationStrings := []string{"hello"}
ctx := context.Background()
opts := option.WithAPIKey(APIKEY)
c, err := translate.NewClient(ctx, opts)
if err != nil {
fmt.Println(err)
}
defer c.Close()
resp, err := c.Translate(ctx, translationStrings, language.French,
&translate.Options{
Source: language.English,
Format: translate.Text,
})
if err != nil {
fmt.Println(err)
}
fmt.Println(resp)
}

V3


translate "cloud.google.com/go/translate/apiv3"
translatepb "google.golang.org/genproto/googleapis/cloud/translate/v3"
c, err := translate.NewTranslationClient(ctx, opts)
if err != nil {
fmt.Println(err)
}
defer c.Close()
req := &translatepb.TranslateTextRequest{
Contents:           translationStrings,
TargetLanguageCode: "sr-Latn",
}
resp, err := c.TranslateText(ctx, req)

V2的代码运行良好,但V3的代码不起作用。它给出错误:

API keys are not supported for gRPC APIs. Remove the WithAPIKey option from your client-creating call.

如错误中所述,它要求我删除WithAPIKey选项。但如果我删除了这个,那么我将如何为每个客户端使用api密钥。

我选择使用V3api,因为它将作为一个整体进行翻译,所以这将是一个很大的请求。我在文档中读到V3api可以批量工作。

所以我的问题是:

  1. 如何将每个客户端的api密钥结构与api V3一起使用
  2. 为了上述目的,可以使用api V2吗

云翻译API v3当前不支持API密钥。建议您为云翻译API v3请求创建一个服务帐户。有关创建服务帐户的信息,请参阅创建和管理服务帐户。您的服务帐户必须添加到为云翻译API v3添加的IAM角色之一。

最新更新