Google Shortener API限制

时间:2018-03-13 08:26:44

标签: php google-api google-url-shortener

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

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

在上午11点,我们有一个运行代码的cron作业,需要缩短约15,000个网址,

昨天我们只使用了一个密钥,但是今天我们添加了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是每个请求的唯一用户ID(因为我们为每个用户生成每个网址)。但仍面临着403 !!!

enter image description here

任何想法?

1 个答案:

答案 0 :(得分:1)

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

解决方法

  1. 在Google开发者控制台上创建多个项目。每个都有一个API密钥。
  2. 使用随机变量发送每个请求的可选parm userid。
  3. 检查开发者控制台中的配额标签,看看是否可以增加配额,它会有铅笔图标。
  4. 请注意,您被锁定的时间应该是一个小时左右。

      

    quotaUser userIp的替代方案。允许您强制执行每个用户的配额   即使在用户的IP的情况下,从服务器端应用程序   地址不详。例如,这可以通过应用程序发生   代表用户在App Engine上运行cron作业。你可以选择   任何唯一标识用户的任意字符串,但它是   限制为40个字符。如果提供了两者,则覆盖userIp。学习   有关封顶API使用的更多信息。

    您可以在请求中将其添加为额外的parm

    quotaUser=xxxx