goo.glのAPI提供が開始されたので試してみた
via. Googleの短縮URL「goo.gl」がAPIの提供を開始 - F.Ko-Jiの「一秒後は未来」
なんだか、以前ちょろっと物議を醸しだしたServices_ShortURL_Googlを思い出します。。。
とりあえず、URLの短縮・展開だけのコードを書いてみました。
- 短縮時は、短縮するURLをJSONデータとし、Content-Typeを指定してPOST
- 展開時は、短縮されたURLをQUERY_STRINGに付けてGET
で良いようです。
<?php require_once 'HTTP/Request2.php'; define('API_KEY', '[api key]'); define('SERVICE_URL', 'https://www.googleapis.com/urlshortener/v1/url'); define('TARGET_URL', 'http://d.hatena.ne.jp/shimooka/'); /** * shorten */ $req = new HTTP_Request2(); $req->setUrl(SERVICE_URL . '?key=' . API_KEY); $req->setMethod(HTTP_Request2::METHOD_POST); $req->setBody(json_encode(array('longUrl' => TARGET_URL))); $req->setHeader('Content-Type', 'application/json'); $req->setConfig(array('ssl_verify_peer' => false)); try { $res = $req->send(); if ($res->getStatus() !== 200) { throw new Exception('request failed status : ' . $res->getStatus()); } $json = json_decode($res->getBody()); $shortened_url = $json->id; var_dump($shortened_url); } catch (Exception $e) { var_dump($e); } /** * expand */ $req = new HTTP_Request2(); $req->setUrl(SERVICE_URL . '?shortUrl=' . $shortened_url); $req->setConfig(array('ssl_verify_peer' => false)); try { $res = $req->send(); if ($res->getStatus() !== 200) { throw new Exception('request failed status : ' . $res->getStatus()); } $json = json_decode($res->getBody()); $long_url = $json->status === 'OK' ? $json->longUrl : 'maybe ' . $json->status; var_dump($long_url); } catch (Exception $e) { var_dump($e); }
APIキーはGoogleのAPIs Consoleから取得できます。APIキーを使わず、OAuthによる認証も使えるようですが、APIキーの利用が推奨されています。また、リクエスト制限は、1日100万クエリのようです。
で、
に引っかかってしばらく悩んだのは秘密です X-(
APIs Consoleの「URL Shortener API」の欄にある「Activate」ボタンをクリックして取得してください。