2011年4月6日 星期三

facebook check in API (graph) 實作範例教學

facebook在台灣開放打卡後,graph裡的checkin API可以來玩玩
搭配手機定位來做應用 (手機瀏覽器取得geolocation)
以下為使用facebook php SDK 的實作範例教學

include('inc/facebook.php');
$facebook = new Facebook(
    array(
        'appId'  => $facebook_app_key,
        'secret' => $facebook_app_secret,
        'cookie' => true,
    )
);

$lat = filter_input(INPUT_GET, 'lat', FILTER_VALIDATE_FLOAT);
$long = filter_input(INPUT_GET, 'long', FILTER_VALIDATE_FLOAT);
$fb_id = $facebook->getUser();
//檢查登入
if( !$fb_id ){
    echo 'Please login facebook.'; exit;
}
//檢查經緯度
if( !$lat || !$long ){
    echo 'latitude or longitude is null'; exit;
}
//search place
try{
    $place = $facebook->api('/search?type=place¢er='.$lat.','.$long.'&distance=1000');
}catch(Exception $e){ var_dump($e); }
//checkin
try{
    $checkin_res = $facebook->api('/me/checkins'
              ,'post'
              ,array(
                   'message' => '手機綁app來check in,除了阿賢其他人都可以被tag'
                  ,'coordinates' => '{"latitude":"'.$lat.'", "longitude": "'.$long.'"}'
                  ,'place' => $place['data'][0]['id']
                  ,'application' => '{"name":"bruce test","id":"'.$facebook_app_id.'"}'
                  ,'tags' => '朋友id1,朋友id2,朋友id3,朋友id4,朋友id5'
               )
            );
    echo 'check in success.';
}catch(Exception $e){ var_dump($e); }

7 則留言:

  1. $place = $facebook->api('/search?type=place&center='.$lat.','.$long.'&distance=1000');
    才對
    不知道為什麼變亂碼了 XD

    回覆刪除
  2. 又不見了耶=口=...........

    回覆刪除
  3. 太長會被系統自動刪除嗎....

    回覆刪除
  4. 不好意思 打擾你ˊˋ
    我研究了很久 都沒辦法成功....
    'message' => '手機綁app來check in,除了阿賢其他人都可以被tag'
    ,'coordinates' => '{"latitude":"'.$lat.'", "longitude": "'.$long.'"}'
    ,'place' => $place['data'][0]['id']
    ,'application' => '{"name":"yourasdfapp","id":"'xx"}'
    ,'tags' => 'xx'
    這邊改成這樣 東西都出不來耶~"~

    回覆刪除
  5. tags 是朋友的facebook id
    如果不要tag朋友就空白 ,tags => '' 就好

    回覆刪除
  6. Hi Bruce,

    請問一下再 Facebook App 權限管理那邊, 打卡的權限要怎麼設定?

    Thanks!

    回覆刪除