0

ユーザーのパスワードをリセットするために、ランダムで一意のパスワードを生成するかなり単純なスクリプトを作成しました。パスワードをプレーン テキストとして電子メールで送信するのは嫌いなので、スクリプトを使用してパスワードを画像に変換し、サーバーに保存します。スクリプトはパスワードとパスワードの画像を返し、Google URL-Shortener API を使用してパスワード画像の URL を短縮することになっていました。

これは私たちのオフィスでのみ使用されるものであり、ページの URL は公開されていないため、OAuth 2.0 の代わりに API キーを使用することにしました。

うまく機能していたのに、突然短縮 URL の提供を停止しました。エラーを表示し、このエラーを返し始めたように、小さなエラー処理コードを追加しました。

403 - 認証されていない使用の 1 日あたりの制限を超えました。継続利用には会員登録が必要です。

短縮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

1

興味深い展開です....私は小さな変更を加えました:

$postData 配列を変更して longURL のみを含め、API キーを CURLOPT_URL に追加しました。元のページを更新して新しいコードを取得した後、機能しました。

API キーを「有効化」したユーザーで goo.gl にサインインすると、作成した最新のものが表示されません。

したがって、元の質問には回答があるように見えますが (現在は機能しています)、さらに 2 つの質問が残っています。

  1. なぜそれが機能したのですか?
  2. 作成された短縮 URL の履歴が表示されないのはなぜですか?
于 2015-06-16T22:14:41.467 に答える