Curl Google URL Shortener API和API密钥返回;403-超出未经认证使用的每日限制。”;使用PHP&;卷曲

Curl Google URL Shortener API和API密钥返回;403-超出未经认证使用的每日限制。”;使用PHP&;卷曲,curl,google-api-php-client,api-key,google-url-shortener,Curl,Google Api Php Client,Api Key,Google Url Shortener,我创建了一个相当简单的脚本,可以为我生成一个随机且唯一的密码来重置用户的密码。因为我讨厌通过电子邮件以明文形式发送密码,所以我的脚本会将密码转换为存储在服务器上的图像。该脚本返回密码和密码图像,并应使用GoogleURL Shortener API缩短密码图像的URL 因为这只是我们办公室使用的东西,而且页面的URL不是公共的,所以我选择使用API键而不是OAuth 2.0 它工作得很好,然后突然停止提供缩短的URL。我添加了一点错误处理代码,这样它就会显示错误,并开始返回此错误: 403-超出

我创建了一个相当简单的脚本,可以为我生成一个随机且唯一的密码来重置用户的密码。因为我讨厌通过电子邮件以明文形式发送密码,所以我的脚本会将密码转换为存储在服务器上的图像。该脚本返回密码和密码图像,并应使用GoogleURL Shortener API缩短密码图像的URL

因为这只是我们办公室使用的东西,而且页面的URL不是公共的,所以我选择使用API键而不是OAuth 2.0

它工作得很好,然后突然停止提供缩短的URL。我添加了一点错误处理代码,这样它就会显示错误,并开始返回此错误:

403-超出未经认证使用的每日限制。继续使用 需要注册

下面是我用来获取缩短URL的函数:

function shortURL($ImgID)
{
    // This is the URL to shorten
    $ImgURL = 'http://www.mywebsite.com/temp/'.$ImgID.'.jpg';

    // Get API key from : http://code.google.com/apis/console/
    $apiKey = 'MY_API_KEY'; //browser key

    $postData = array('longUrl' => $ImgURL, 'key' => $apiKey);

    $jsonData = json_encode($postData);

    $curlObj = curl_init();

    curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
    curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curlObj, CURLOPT_HEADER, 0);
    curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
    curl_setopt($curlObj, CURLOPT_POST, 1);
    curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData);

    $response = curl_exec($curlObj);

    // Change the response json string to object
    $json = json_decode($response);

    // Change the response json string to an array
    $shortLink = get_object_vars($json);

    curl_close($curlObj);

    // Error handling
    $short = objectToArray($json);
    $code = $short['error']['code'];
    $message = $short['error']['message'];

    return ($shortLink['id']?$shortLink['id']:$code.' - '.$message);

}
就像我说的,它工作得很好,然后有一天停止了。我更改了API密钥,但没有成功。我已经查看了开发者控制台中的配额,但无论是从总体上还是从每个用户的角度来看,我都没有达到那里建议的限制


我转到这里是因为我的Google Fu让我失望了,我还没有找到任何解释来解释什么改变了,以及为什么我以前的工作脚本停止了

一个有趣的发展。。。。我做了一个小小的改变:

我将$postData数组更改为只包含longURL,并将API键添加到CURLOPT_URL中,在刷新原始页面以提取新代码后,它成功了

当我转到goo.gl并与“激活”API密钥的用户登录时,它不会显示我最近创建的API密钥

因此,虽然最初的问题似乎得到了回答(我现在已经开始工作了),但我还有两个问题:

  • 它为什么起作用
  • 为什么它不向我展示创造的历史 缩短的URL

  • 一个有趣的发展。。。。我做了一个小小的改变:

    我将$postData数组更改为只包含longURL,并将API键添加到CURLOPT_URL中,在刷新原始页面以提取新代码后,它成功了

    当我转到goo.gl并与“激活”API密钥的用户登录时,它不会显示我最近创建的API密钥

    因此,虽然最初的问题似乎得到了回答(我现在已经开始工作了),但我还有两个问题:

  • 它为什么起作用
  • 为什么它不向我展示创造的历史 缩短的URL

  • 一个有趣的发展。。。。我做了一个小小的改变:

    我将$postData数组更改为只包含longURL,并将API键添加到CURLOPT_URL中,在刷新原始页面以提取新代码后,它成功了

    当我转到goo.gl并与“激活”API密钥的用户登录时,它不会显示我最近创建的API密钥

    因此,虽然最初的问题似乎得到了回答(我现在已经开始工作了),但我还有两个问题:

  • 它为什么起作用
  • 为什么它不向我展示创造的历史 缩短的URL

  • 一个有趣的发展。。。。我做了一个小小的改变:

    我将$postData数组更改为只包含longURL,并将API键添加到CURLOPT_URL中,在刷新原始页面以提取新代码后,它成功了

    当我转到goo.gl并与“激活”API密钥的用户登录时,它不会显示我最近创建的API密钥

    因此,虽然最初的问题似乎得到了回答(我现在已经开始工作了),但我还有两个问题:

  • 它为什么起作用
  • 为什么它不向我展示创造的历史 缩短的URL

  • 在这篇文章中看到答案

    您需要将API密钥添加到请求中

     $apikey = "YOURAPIKEY";
     curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url?key='.$apikey);
    

    在这篇文章中看到答案

    您需要将API密钥添加到请求中

     $apikey = "YOURAPIKEY";
     curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url?key='.$apikey);
    

    在这篇文章中看到答案

    您需要将API密钥添加到请求中

     $apikey = "YOURAPIKEY";
     curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url?key='.$apikey);
    

    在这篇文章中看到答案

    您需要将API密钥添加到请求中

     $apikey = "YOURAPIKEY";
     curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url?key='.$apikey);
    

    越来越好奇。当我昨天发布上述答案时,我忽略了一个事实,即在对$postData进行更改并将$apiKey添加到我的curl URL后,我收到了一条新的错误消息:“403-您的API密钥上配置了每IP或每引用限制,请求与这些限制不匹配。如果允许来自此IP或推荐人的请求,请使用Google开发者控制台更新API密钥配置。”(在下一条评论中继续)(在上一条评论中继续)当我收到消息后,我回到开发者控制台,从浏览器密钥中删除了引用的网站并重试。它仍然给我带来了新的错误。因此我进去并生成了一个API服务器密钥,列出了我认为是我们的服务器的IP。它仍然产生了这个新错误。因此,我从浏览器密钥中删除了web服务器的IPe列表并重试。这次它没有给我错误。(在下一条评论中继续)(从上一条评论中继续)因此,我再次返回并将其更改为API浏览器键,我们的网站作为推荐人,这样我可以将错误消息作为更新在此处共享,错误不会再次重现。我认为这是一个奇怪的时间问题,再次删除了推荐网站,所有内容仍然有效(我的随机pw和图片被生成,一个谷歌短URL显示出来,没有任何错误)“对于我自己的问题。今天早上,新错误又回来了,它仍然没有在帐户历史记录中显示缩短的URL。更奇怪,更奇怪。当我昨天发布上述答案时,我忽略了一个事实,即在对$postData进行更改并将$apiKey添加到我的curl URL后,我收到了一条新的错误消息:“403-每个IP或每个Ref都有一个