0

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

由于这仅在我们的办公室中使用,并且页面的 URL 不公开,因此我选择使用 API-Key 而不是 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 让我失望了,而且我无法找到任何解释来解释发生了什么变化以及为什么我以前的工作脚本停止了。

4

2 回答 2

2

请参阅这篇文章Goo.gl URL Shortener Stop Working (php/curl)中的答案

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

 $apikey = "YOURAPIKEY";
 curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url?key='.$apikey);
于 2015-08-04T20:00:19.240 回答
1

一个有趣的发展......我做了一个小改动:

我将 $postData 数组更改为仅包含 longURL 并将 API 密钥添加到 CURLOPT_URL 并在刷新原始页面以提取新代码后,它起作用了。

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

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

  1. 为什么它起作用了?
  2. 为什么它不向我显示创建的缩短 URL 的历史?
于 2015-06-16T22:14:41.467 回答