Google Shortener API限制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google Shortener API限制相关的知识,希望对你有一定的参考价值。
我们在项目中使用Google Shortener,似乎Google有两个限制:
在上午11点,我们有一个运行代码的cron作业,需要缩短约15,000个URL,
昨天我们只使用了一个密钥,但是今天我们添加了6个密钥以绕过这个限制,每分钟使用其中一个密钥和以下代码
$googleAPIKeys = [
'KEY1CODE',
'KEY2CODE',
'KEY3CODE',
'KEY4CODE',
'KEY5CODE',
'KEY6CODE'
];
$roundRobinKey = date('i') % count($googleAPIKeys);
try {
$req = $client->post('https://www.googleapis.com/urlshortener/v1/url?key=' . $googleAPIKeys[$roundRobinKey], [
'json' => [
'longUrl' => $url
]
]);
} catch (ClientException $e) {
return $url;
}
$result = json_decode($req->getBody()->getContents());
这看起来很奇怪,为什么会这样?缩短谷歌服务的真正局限是什么?我该如何绕过这个限制?
另一个注意事项:在单键情况下,如果你的限制超过(100每100秒)如果你试图再次使用该键5分钟后仍面临403限制超过问题!似乎谷歌的局限性并不如他们所说的那样!
更新
在阅读Standard Query Parameters和Capping API usage后,我将请求改为以下内容
$req = $client->post('https://www.googleapis.com/urlshortener/v1/url?quotaUser=' . $userID . '&key=' . $myKey, [
'json' => [
'longUrl' => $url
]
]);
哪个userID
是每个请求唯一的userID(因为我们为每个用户生成每个url)。但仍然面临着403!
任何的想法?
限制将基于项目和用户。但它也可以基于ip。
解决方法
- 在Google开发者控制台上创建多个项目。每个都有一个API密钥。
- 使用随机变量向每个请求发送可选的param userid。
- 检查开发人员控制台中的配额选项卡,看看是否可以增加配额,它将有一个铅笔图标。
请注意,您被锁定的时间应该是一个小时左右。
quotaUser userIp的替代方案。允许您从服务器端应用程序强制执行每用户配额,即使在用户的IP地址未知的情况下也是如此。例如,对于代表用户在App Engine上运行cron作业的应用程序,可能会发生这种情况。您可以选择唯一标识用户的任意字符串,但限制为40个字符。如果提供了两者,则覆盖userIp。详细了解Capping API使用情况。
您可以在请求中将其添加为附加parm
quotaUser=xxxx
以上是关于Google Shortener API限制的主要内容,如果未能解决你的问题,请参考以下文章
来自 Python AppEngine 的 Google Url Shortener API:HTTPError:HTTP 错误 403:禁止
sh Bash:goo.gl#使用Google URL Shortener服务(http://goo.gl)缩短网址。
sh Bash函数在stdin上使用goo.gl URL缩短器。参见<https://developers.google.com/url-shortener/v1/getting_started