Google Translation API的OAuth范围是什么?

时间:2013-03-06 16:26:53

标签: google-app-engine oauth-2.0 google-api-client oauth2-playground oauth2client

当然其他人正在使用API​​,我查看并搜索过,在验证时,我似乎无法找到为scope参数放置的正确值:

我查看了所有这些范围列表,没有,尝试过OAuth 2.0游乐场,翻译不存在。

oauth playground v1

oauth playground v2

oath supported scopes

auth scopes

欢迎任何线索,谢谢。

错误讯息:

Error: invalid_request

Missing required parameter: scope

Learn more
Request Details

更新

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

我沿着这条路走下了这条路:

我试图让示例代码在这里工作:

translation api sample code

并没有apiclient.discovery模块

from apiclient.discovery import build

我去寻找让我降落的here to this quick-start configurator 这给了我一个自动生成的翻译api项目here

这个应该为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">

我正在使用的代码用这种方式调用哪个错误:

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

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

https://www.googleapis.com/language/translate/v2?key=MYSECRETKEYWENTHERE&q=zebra&target=fr&alt=json&source=en

再次更新

好的,我从示例项目中删除了所有OAuth代码,然后再次运行它,然后终于发现我的密钥中有一个拼写错误... donk

感谢您的回答!

谢谢

3 个答案:

答案 0 :(得分:4)

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


OAuth Scopes解释:

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

只有https://www.googleapis.com/auth/userinfo.email的人会显示如下内容:

+ View your email address
    * View the email address associated with your account

翻译API解释:

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

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

正如Translate API site所述,要翻译某些内容,您只需向

发出请求即可
https://www.googleapis.com/language/translate/v2?parameters

使用适当的参数。

所需参数如文档中所列,

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

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

https://www.googleapis.com/language/translate/v2?key=INSERT-YOUR-KEY&source=en&target=de&q=Hello%20world

查看parameters specification以了解您必须提供的内容。

怎么做:

查看Python example using the Translate API的来源或查找API library for the language you want to use

您将在示例中看到没有提及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"
 }
}

上述响应表示密钥无效。您可以通过Google API Console申请新的(或查找旧的)。

要点:

  • OAuth范围用于请求有关用户的信息。在验证用户身份时,您必须确定范围,并且您可以访问这些范围提供的所有信息。
  • Translate API不需要范围。您在请求中提供了API密钥(以及其他一些信息),并提供了翻译as documented
  • 如果有关于您希望翻译的用户的信息,则必须分两步完成。首先,通过在适当的范围内对用户进行身份验证来收集信息,然后通过将该信息提供给Translate API来收集信息。
  • 如果您收到400,则回复中会包含一些可用于调试问题的信息。

答案 1 :(得分:1)

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

根据this Google Group question更新:

“Translate API(v1和v2)都是未经身份验证的API,因此您无需使用OAuth。相反,对于v2,您应该使用API​​密钥,您可以在此处获取:{{ 3}}“

答案 2 :(得分:0)

有关错误消息

错误:invalid_request 缺少必需参数:范围

您需要在表单中添加范围

<input type="hidden" name="scope" value="https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo#email https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/tasks https://www-opensocial.googleusercontent.com/api/people https://www.googleapis.com/auth/plus.login" />

请将spring social login与linkedin,facebook,twitter和Google提供商联系。