goo.glがAPI公開されたらしいので試してみた
この記事は賞味期限切れです。(更新から1年が経過しています)
Overview – Google URL Shortener API – Google Code
Google製の短縮URLサービス「goo.gl」のAPIが公開されたそうなので、
試しに使ってみたメモ。
- 必要なもの
- 短縮してみよう
- 展開してみよう
- めんどくさいのでクラスにしてみる
- (おまけ) JavaScriptで展開する
必要なもの
- APIのURLを控えておく
- https://www.googleapis.com/urlshortener/v1/url
- APIキーを取得しておく
- Google APIs Consoleで
「URL Shortener API」をアクティブにしてAPIキーを控えて来る
今回は、PHP+cURLでやってみることに。
とりあえず持っている情報を変数につっこむ。
$api_url = "https://www.googleapis.com/urlshortener/v1/url";
$api_key = "[あなたのAPIキーを入れてください]";
短縮してみよう
URLの短縮は、APIに次のようなJSONをPOSTで送りつけます。
{“longUrl”: “http://www.google.com/”}
$longUrl = "http://blog.mach3.jp/";
$curl = curl_init();
$curl_params = array(
// APIのURLに ?key=[your-key]を足してやります
CURLOPT_URL => $api_url . "?" .
http_build_query( array( "key" => $api_key ) ),
// ヘッダをapplication/jsonに
CURLOPT_HTTPHEADER => array( "Content-Type: application/json" ),
// POSTで送ります
CURLOPT_POST => true,
// ロングURLの情報をJSONに加工して渡します
CURLOPT_POSTFIELDS => json_encode( array( "longUrl" => $longUrl ) ),
CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array( $curl, $curl_params );
$result = json_decode( curl_exec( $curl ) ); // 返り値はJSONなのでデコード
var_dump( $result );
レスポンスはJSONで返って来るので、json_decodeでオブジェクトにしてやります。
最終的に格納されている情報はこんな感じ。
object(stdClass)#1 (3) {
["kind"]=>
string(16) "urlshortener#url"
["id"]=>
string(19) "http://goo.gl/ZZKde"
["longUrl"]=>
string(21) "http://blog.mach3.jp/"
}
展開してみよう
展開は簡単。パラメータくっつけてGETでとってくるだけです。
先ほど作った「http://goo.gl/ZZKde」を展開してみます。
こんなリクエストをおくって返事をもらってるだけ。
労力惜しむならfile_get_contents()でもよし。
https://www.googleapis.com/urlshortener/v1/url?key=[your_api_key]&shortUrl=[展開したいURL]
$shortUrl = "http://goo.gl/ZZKde";
$curl = curl_init();
$curl_params = array(
CURLOPT_URL => $api_url . "?" .
http_build_query( array(
"key" => $api_key,
"shortUrl" => $shortUrl
)),
CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array( $curl, $curl_params );
$result = json_decode( curl_exec( $curl ) );
こんな感じに帰ってきました。
object(stdClass)#2 (4) {
["kind"]=>
string(16) "urlshortener#url"
["id"]=>
string(19) "http://goo.gl/ZZKde"
["longUrl"]=>
string(21) "http://blog.mach3.jp/"
["status"]=>
string(2) "OK"
}
めんどくさいのでクラスにしてみた
- GoogleUrl
- gist: 69e4a0c19e4776924a21 – Shorten and expand urls using Google URL Shortener API- GitHub
使い方
// createメソッドで初期化。
// new GoogleUrl( $api_key ) でもいいです。
$gu = GoogleUrl::create( "[your-api-key]" );
try {
// shortenメソッドで短縮
$shorten = $gu->shorten( "http://www.mach3.jp" );
var_dump( $shorten );
// expandメソッドで展開
$expand = $gu->expand( $shorten->id );
var_dump( $expand );
} catch( Exception $e ){ die( $e->getMessage() ); }
(おまけ) JavaScriptで展開する
gist: d98215a9cae6ef22e741 – expand url using goo.gl shortener api- GitHub
jQuery使って展開してみました。
「callback」パラメータでJSONP出来るので、大変簡単。
つまりこんなリクエストをすることになります。
https://www.googleapis.com/urlshortener/v1/url?key=[your_api_key]&shortUrl=[展開するURL]&callbck=[コールバック関数名]
var expandGoogleUrl = function( url, key, callback ){
$.ajax({
url : "https://www.googleapis.com/urlshortener/v1/url",
dataType : "jsonp",
data : { shortUrl : url, key : key },
success : function( data ){
callback( data.error ? false : data.longUrl );
}
});
};
// example
expandGoogleUrl (
"http://goo.gl/fbsS",
"[your api key]",
function( url ){
console.log( url );
}
);
QRコードがそのまま作れたり( http://goo.gl/pvqxy.qr )、
アクセス解析出来たり( http://goo.gl/info/pvqxy )と結構便利なサービスです。
短縮したい際には使ってみようかな!
コメント