Google翻译API的OAuth范围是什么?

sla*_*tir 3 google-app-engine oauth-2.0 google-api-client oauth2client oauth2-playground

我查找并搜索了其他人,肯定是其他人正在使用API​​,在身份验证时,我似乎找不到正确的范围参数值:

我已经查看了所有这些作用域列表,没什么,尝试过OAuth 2.0游乐场,没有翻译。

oauth游乐场v1

oauth游乐场v2

宣誓支持范围

认证范围

任何线索都欢迎,谢谢。

错误信息:

Error: invalid_request

Missing required parameter: scope

Learn more
Request Details
Run Code Online (Sandbox Code Playgroud)

更新资料

用户Ezra解释说,翻译API不需要OAuth2身份验证。

我沿着这条路走这条路:

我正在尝试使示例代码在这里工作:

翻译api示例代码

而且没有apiclient.discovery模块

from apiclient.discovery import build
Run Code Online (Sandbox Code Playgroud)

我去了寻找那它落在我这里这个快速启动配置 这给了我一个自动生成翻译API项目在这里

这个应该为Translation API量身定制的入门项目包括一整套OAuth配置,因此由于这里提到的错误,我最终提出了一个问题

 exception calling translation api: <HttpError 400 when requesting    https://www.googleapis.com/language/translate/v2?q=zebra&source=en&alt=json&target=fr&key=MYSECRETKEYWENTHERE returned "Bad Request">
Run Code Online (Sandbox Code Playgroud)

我用来进行上述调用的代码,这种方式的错误是:

   service = build('translate', 'v2',
        developerKey='MYSECRETKEYWENTHERE')
result = service.translations().list(
  source='en',
  target=lang,
  q='zebra'
).execute()
Run Code Online (Sandbox Code Playgroud)

如果我直接拨打该错误抱怨的电话,那就可以了

https://www.googleapis.com/language/translate/v2?key=MYSECRETKEYWENTHERE&q=zebra&target=fr&alt=json&source=en
Run Code Online (Sandbox Code Playgroud)

再次更新

好的,我从示例项目中删除了所有OAuth代码,然后再次运行它,最后发现我的密钥中有错字...

感谢您的回答!

谢谢

Ezr*_*zra 5

我认为您误解了OAuth范围的用途。您没有列出任何代码,因此我将解释一些概念,并希望您可以将它们应用于实际情况。


OAuth范围说明:

OAuth范围的目的是访问有关经过身份验证的用户的信息。每个应用程序的范围都不同,并确定有关应用程序被授予访问权限的用户的哪些信息。

具体来说,一个OAuth请求的范围参数为

https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile

登录时将向用户显示类似于以下内容的提示:

+ View basic information about your account
    * View your name, public profile URL, and photo
    * View your gender and birthdate
    * View your country, language, and timezone
+ View your email address
    * View the email address associated with your account
Run Code Online (Sandbox Code Playgroud)

虽然只有一个https://www.googleapis.com/auth/userinfo.email会显示类似以下内容:

+ View your email address
    * View the email address associated with your account
Run Code Online (Sandbox Code Playgroud)

翻译API的说明:

要使用Translate API,您不必让用户通过OAuth进行身份验证。您只需获取一个API密钥,然后在对服务的请求中提供该密钥。

Translate API的使用与OAuth的使用完全正交。

Translate API网站上所述,要翻译内容,您只需向

https://www.googleapis.com/language/translate/v2?parameters
Run Code Online (Sandbox Code Playgroud)

与适当的参数。

如文档中所列,所需的参数是

  • API密钥。使用键查询参数来标识您的应用程序。
  • 目标语言。使用目标查询参数来指定要翻译成的语言。
  • 源文本字符串。使用q查询参数来标识要翻译的字符串。

具体而言,将文本“ hello world”翻译成德语的请求将是:

https://www.googleapis.com/language/translate/v2?key=INSERT-YOUR-KEY&source=en&target=de&q=Hello%20world
Run Code Online (Sandbox Code Playgroud)

查看参数规范以了解您必须提供的内容。

该怎么办:

使用Translate API查看Python示例的源代码,或查找您要使用的语言API库

您将在示例中看到,没有提到OAuth范围,因为不需要针对Translate API服务进行身份验证。您只需要提供API密钥,以及在您对服务的请求中要翻译的文本。

可能有需要范围的API调用,但Translate并不是其中之一。


如果您需要有关用户的某些信息,则必须查找访问该信息所需的API和范围。然后,您将根据需要将此信息提供给Translate API。

如果是400

如果您收到错误响应,那很好,因为即使未按要求进行服务调用也可以正常工作。

如果是400,则Translate API的响应将为您提供有关其响应错误的线索。

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "keyInvalid",
    "message": "Bad Request"
   }
  ],
  "code": 400,
  "message": "Bad Request"
 }
}
Run Code Online (Sandbox Code Playgroud)

上面的响应表明密钥无效。您可以通过Google API控制台请求一个新的(或查找旧的)。

摘要:

  • OAuth范围用于请求有关用户的信息。在对用户进行身份验证时,您将必须标识范围,并且您将有权访问这些范围提供的所有信息。
  • Translate API不需要范围。您可以在请求中提供API密钥(和其他一些信息),并按文档所述将其翻译回来。
  • 如果存在有关您希望翻译的用户的信息,则必须分两个步骤完成。首先,通过在适当范围内对用户进行身份验证来收集信息,其次,将信息提供给Translate API。
  • 如果得到400,响应将包括一些信息,您可以使用这些信息来调试问题。


Dee*_*ode 1

根据Google 的文档,您必须查看特定 API 的文档。

根据此 Google 群组问题进行更新:

“翻译 API(v1 和 v2)是未经身份验证的 API,因此您不需要使用 OAuth。相反,对于 v2,您应该使用 API 密钥,您可以在此处获取该密钥: http://code .google.com/apis/console