Google 起酥油 API 限制

Google Shortener API limitation

我们在项目中使用 Google 起酥油,看来 Google 有两个限制:

在 11:00 上午,我们有一个运行代码的 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(限制超出

好像很奇怪,为什么会这样?缩短 google 服务的真正限制是什么? 如何绕过这个限制?

另一个注意事项: 在单键场景中如果您超过限制(每 100 秒 100 次)如果您在 5 分钟后尝试再次使用该键仍然面临 403 限制超过问题 !!! 看来google限制并不像他们说的那样!!!

更新

看完后Standard Query Parameters and Capping API usage 我已将我的请求更改为以下内容

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

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

有什么想法吗?

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

解决方法

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

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

quotaUser Alternative to userIp. Lets you enforce per-user quotas from a server-side application even in cases when the user's IP address is unknown. This can occur, for example, with applications that run cron jobs on App Engine on a user's behalf. You can choose any arbitrary string that uniquely identifies a user, but it is limited to 40 characters. Overrides userIp if both are provided. Learn more about Capping API usage.

您将其添加为请求中的附加参数

quotaUser=xxxx