每秒进行多次调用时,Google API Client for Google BigQuery Call 的授权失败并出现错误 403
Posted
技术标签:
【中文标题】每秒进行多次调用时,Google API Client for Google BigQuery Call 的授权失败并出现错误 403【英文标题】:Authorization fails with Error 403 randomly for Google API Client for Google BigQuery Call when making multiple calls per second 【发布时间】:2014-01-29 19:03:24 【问题描述】:我在尝试授权 Google API 客户端进行 Google Big Query 调用时看到 403 RANDOMLY(有时有效,有时失败)。
为了提供更多上下文,我以每秒 5 到 10 次的速度同时调用多个 api,因此当我按顺序进行调用时,不会出现错误。但是,当我每秒拨打几个电话时,我会收到错误消息。我在这里检查了 BigQuery 速率限制:https://developers.google.com/bigquery/quota-policy 它说我最多可以发出 20 个并发查询。我很确定,我没有达到速率限制。
我将不胜感激任何有系统地解决这个问题的指针或建议。 谢谢, 导航
代码如下:
def initialize
client = Google::APIClient.new
path_to_key_file = "/Users/abcyoo/crazy/crazy-google-client-key.p12" #dev
passphrase = "XXXXXXXX"
key = Google::APIClient::PKCS12.load_key(path_to_key_file, passphrase)
service_account = Google::APIClient::JWTAsserter.new(
'1063766308008@developer.gserviceaccount.com',
'https://www.googleapis.com/auth/bigquery',
key)
client.authorization = service_account.authorize
client.authorization.fetch_access_token!
bq = client.discovered_api("bigquery", "v2")
return client,bq
end
这是我收到的错误消息:
Signet::AuthorizationError (Authorization failed. Server message:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>Google Accounts</title><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0" /><link rel='stylesheet' type='text/css' href='https://ssl.gstatic.com/accounts/o/1893590695-error_page_css_ltr.css'>
403。这是一个错误。
您无权执行此请求。我们知道的就这些。): signet (0.4.5) lib/signet/oauth_2/client.rb:875:in `fetch_access_token'
signet (0.4.5) lib/signet/oauth_2/client.rb:888:in `fetch_access_token!'
app/controllers/application_controller.rb:105:in `initialize'
【问题讨论】:
【参考方案1】:您是否每秒调用 client.discoverty_api 5-10 次?如果是这样,那可能就是限制您的速率。您可以每个线程调用一次或一次并重用 bigquery 服务吗?
【讨论】:
谢谢乔丹。这就是问题所在。感谢您的快速帮助以上是关于每秒进行多次调用时,Google API Client for Google BigQuery Call 的授权失败并出现错误 403的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Maps API v3.0 中多次调用 map.fitBounds()
通过 OAuth 对 Google API 进行经过身份验证的调用时遇到问题
Google Analytics:尝试进行授权 API 调用时,JWT 签名无效 (invalid_grant)