Google Shortener API限制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google Shortener API限制相关的知识,希望对你有一定的参考价值。

我们在项目中使用Google Shortener,似乎Google有两个限制:

  • 100秒内每个用户100个请求
  • 每天1000000个请求。 google limitation

在上午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());

但仍面临403(限制超过)enter image description here

enter image description here

这看起来很奇怪,为什么会这样?缩短谷歌服务的真正局限是什么?我该如何绕过这个限制?

另一个注意事项:在单键情况下,如果你的限制超过(100每100秒)如果你试图再次使用该键5分钟后仍面临403限制超过问题!似乎谷歌的局限性并不如他们所说的那样!

更新

在阅读Standard Query ParametersCapping API usage后,我将请求改为以下内容

  $req = $client->post('https://www.googleapis.com/urlshortener/v1/url?quotaUser=' . $userID . '&key=' . $myKey, [
    'json' => [
        'longUrl' => $url
    ]
]);

哪个userID是每个请求唯一的userID(因为我们为每个用户生成每个url)。但仍然面临着403!

enter image description here

任何的想法?

答案

限制将基于项目和用户。但它也可以基于ip。

解决方法

  1. 在Google开发者控制台上创建多个项目。每个都有一个API密钥。
  2. 使用随机变量向每个请求发送可选的param userid。
  3. 检查开发人员控制台中的配额选项卡,看看是否可以增加配额,它将有一个铅笔图标。

请注意,您被锁定的时间应该是一个小时左右。

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

限制Google API的Android密钥使用

Google Places API:是否有年度限制请求?

如何限制 Google 地图 API V3 中的平移?