bit.ly API v3が終了してしまったので、bit.ly API v4に移行しようと使い方を調べたものの情報があまりないので、メモがてら置いておきます。
bitlyのダッシュボードがとんでもなく見辛いので見やすくするために書きました。
(棒グラフにマウスオーバーしないと数字がわからないって本当にどうかと思う)
ここでは、短縮URLの展開(元のURLに戻す)と、短縮URLがクリックされた数を取得する方法を記載しています。
APIを使用して、短縮URLを取得する方法は、以下のサイトを参考にしてください。
》短縮URL生成サイト「bit.ly」のAPIv4へのマイグレーションの方法
bit.ly API を使い始める前に
bit.ly APIを使用するには、アクセストークンが必要になります。
アカウントを取得→アクセストークンを取得しておいてください。
アクセストークンを取得する方法は、以下のサイトがわかりやすいと思います。
》bitlyのAPIアクセストークンを取得できない?パスワード入力の場所が変わってた
bit.ly APIで短縮URLを展開する
function LinkExpand($url, $token){
$baseurl = 'https://api-ssl.bitly.com/v4/expand';
if(strpos($url,'https') !== false){
$url = substr($url, 8);
}else{
$url = substr($url, 7);
}
$ch = curl_init($baseurl);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['bitlink_id' => $url]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer ". $token,
"Content-Type: application/json",
"Host: api-ssl.bitly.com",
"Accept: application/json"
]);
$results = json_decode(curl_exec($ch));
$link = $results->long_url;
echo $link;
}
$url
に短縮URL、$token
にアクセストークンを入れて叩きます。
bitlink_id
は、短縮URLからhttps://
を削除したものみたいです。
bit.ly API でクリック数を取得する
function LinkAnalysis($url, $token){
date_default_timezone_set("Asia/Tokyo");
if(strpos($url,'https') !== false){
$url = substr($url, 8);
}else{
$url = substr($url, 7);
}
$api = 'https://api-ssl.bitly.com/v4/bitlinks/'.$url.'/clicks';
$ch = curl_init($api);
curl_setopt($ch, CURLOPT_GETFIELDS, json_encode(['unit'=>'day','units'=>-1]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer ".$token,
"Content-Type: application/json"
]);
$obj = json_decode(curl_exec($ch), true);
if(!$obj){
echo 'データを取得できませんでした';
}else{
$revData = array_reverse($obj['link_clicks']);
$allNum = 0;
echo '<table><tr>';
foreach ($revData as $result){
$getDate = $result['date'];
$getDate = date('m/d', strtotime($getDate));
echo '<th>'.$getDate.'</th>';
}
echo '</tr><tr>';
foreach ($revData as $result){
$getClick = $result['clicks'];
echo '<td>'.$getClick.'</td>';
$allNum += $getClick;
}
echo '</tr></table>';
echo '<p>合計:'.$allNum.'</p>';
}
}
$url
に短縮URL、$token
にアクセストークンを入れて叩きます。
'unit'=>'day'
で取得データの形式を指定できます。
day(日別)の他、"minute"
、"hour"
、"day"
、"week"
、"month"
が指定できます。
'units'=>-1
で取得数を指定できます。-1
で全てのデータを取得します。
30日分しか取得できないので、'unit'=>'day'
の場合は-1
でいいと思います。
途中でarray_reverse
してますが、そのままだと配列の順番が「現在→過去」になっているので、「過去→現在」に直しているだけです。
そのほかの指定はAPIドキュメントをみてください。
》Bitly API V4 - Get Clicks for a Bitlink
bit.ly API v3 との違い
実は、v3ではフリーアカウントでも古いURLの30日以上前のカウント数が取れたのですが、v4が稼働してからは取れなくなりました。
API叩けば有料と同等の数が取れちゃうのどうなのかなって思ってたので、予想はしてましたけど。
Pricingを見る限り、CUSTOMIZEDじゃないとあんまり旨味はないですね。
FreeもBasicも、Link Reporting が30dayになっています。なので、APIで取得できる日数も30dayまでに制限がされています。
Basicで60dayとかにしたらユーザー増えそうなのになぁ。