如何在没有 Oauth 的情况下访问 Google 客户端 API(仅 API 密钥)
Posted
技术标签:
【中文标题】如何在没有 Oauth 的情况下访问 Google 客户端 API(仅 API 密钥)【英文标题】:How to access Google client api without Oauth (just API key) 【发布时间】:2012-12-15 05:26:32 【问题描述】:我正在尝试在没有 Oauth 的情况下访问 Google api 客户端 (Ruby).. 我找到了这个信息:
http://thecodeabode.blogspot.com.au/2012/07/google-api-ruby-client-authorizing-with.html
但不幸的是,如果我按照说明进行操作(这就是我所做的):
require 'google/api_client'
client = Google::APIClient.new(:key => "MYKEY",:authorization => nil)
yt = client.discovered_api("youtube", "v3")
result = client.execute(
:api_method => yt.search.list,
:parameters =>
:key => "MYKEY",
:q => "dogs",
:part => "topicDetails"
)
我明白了
“已超出未经验证使用的每日限制。继续使用需要注册”
怎么了?
【问题讨论】:
【参考方案1】:简而言之,所有基于发现的 API 都需要识别您的调用。当 Google API 无法识别您的应用时,我通常会看到您遇到的错误。您通常可以拨打一些身份不明的电话,但您几乎可以肯定很快就会遇到低得多的“身份不明”配额。您可以使用 OAuth(标识您的应用)进行身份验证,也可以指定 API 密钥(标识您的应用),或者两者都可以。
这是通过设置client.key = "<your api key>"
或将其传递给客户端构造函数来完成的(就像您所做的那样)。您可能还应该设置 client.user_ip = request.remote_ip
(或在您选择的框架中获取客户端 IP 地址的任何内容),特别是如果您没有使用 OAuth 进行身份验证。
您似乎已经在示例中设置了 API 密钥,但您可能有拼写错误或来自错误 API 项目的密钥,或者您遇到了每个用户的限制,这设置了 @ 987654323@ 将解决。另一件重要的事情是,配额可以根据每天的查询来指定,然后每分钟或每小时或在其他时间段内强制执行。因此,您可能有 10k QPD 配额,但这只是 415 QPH 或 7 QPM。我不知道 YouTube 配额是如何执行的,但请记住这一点。
您不需要做的一件事是在 API 调用的 :parameters
参数中设置 :key
。如果您想根据每个请求进行设置,只需将其作为另一个可选参数直接传递给execute
。在您的情况下,这应该由客户自动处理。可能最好从代码中删除它,因为您已经在构造函数中设置了它。
最终结果应该是:
require 'google/api_client'
client = Google::APIClient.new(:key => "MYKEY", :authorization => nil)
yt = client.discovered_api("youtube", "v3")
result = client.execute(
:api_method => yt.search.list,
:authenticated => false,
:user_ip => request.remote_ip,
:parameters =>
:q => "dogs",
:part => "topicDetails"
)
【讨论】:
【参考方案2】:API 控制台中有一个Quotas Pane,它将告诉您该实用 API 密钥的每日限制。你在重复使用别人的密钥吗?如果您没有提供帐单信息(或者它可能是仅适用于 oAuth 的资源),该限制也可能很低
【讨论】:
不,这是新鲜的 API,配额很好。它还说“未经身份验证”的使用,这表明基于密钥的登录没有发生。但是我如何在没有 oauth 的情况下登录>以上是关于如何在没有 Oauth 的情况下访问 Google 客户端 API(仅 API 密钥)的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 oAuth 身份验证的情况下连接到 Google Calendar API?
Gmail插件可在没有oAuth的情况下连接到非Google服务
Android - 如何获取 google plus 访问令牌?
是否可以在没有 OAuth2 身份验证对话框的情况下从 Google App-Engine (python) 连接和查询 BigQuery 表?