When a client contacted me last week to implement facebook checkins into an existing application i had to go searching for information. The only information i could get was from the API, there was no real tutorial out there explaining each step of the process- hopefully I address this issue.
firstly we need the user to accept the application- we do this by bouncing them off to facebook – you need to include the facebook php library – you can find it here
<?php $facebook = new Facebook(array( 'appId' =>"YOURAPPID", 'secret' => "APPSECRET", 'cookie' => false )); if ($me) { $logoutUrl = $facebook->getLogoutUrl(); } else { $loginUrl = $facebook->getLoginUrl(array( 'canvas' => 0, 'fbconnect' => 1, 'req_perms' => 'publish_stream,status_update,offline_access,publish_checkins' )); } ?> <? if ($me){?> Thanks- application has been accepted <? }else{ ?> <a href="<?= $loginUrl; ?>"> Login into Facebook to accept applicatioon </a> <?}?> <? $url = "https://graph.facebook.com/oauth/access_token"; $client_id = "client_id"; $client_secret = "app_id"; $postString = "client_id=$client_id&client_secret=$client_secret&type=client_cred&scope=email,publish_stream,offline_access,publish_checkins"; //This first bit of code is to get the application a access token. $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_FAILONERROR, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $postString); $response = curl_exec($curl); $url = "https://graph.facebook.com/".$FBID."/checkins"; $token = substr($response,13); $attachment = array( 'access_token' =--> $token, 'place' => 'place_ID', 'message' =>'I went to placename today', 'picture' => 'http://logo for post/', 'coordinates' => json_encode(array( 'latitude' => 'lat', 'longitude' => 'long', 'tags' => "")));//tag a user to be tagged in as well $attachment = $attachment; print_r($attachment); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // This i added as the URL is https curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // This i added as the URL is https curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POST, true); // Do I need this ? curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment); $result= curl_exec($ch); curl_close ($ch); print_r($result);// some debug info ?>
The main problem i had with the code was to get the location details- the longitude and latitude had to be encoded as json- luckily php has a handy little tag for this which can turn a php array into json- you do not need to encode the whole attachment just the location details.
You can see with the post below- its a pretty normal post but it has tagged on the back of a map of the location. you can check out the docs here for adding more info to the post- Facebook checkin API DOC
Tags: facebook checkins, graph api


I just love you!
Perfect! We are just working on a app to make it a both way data interaction for User’s Check-ins and your article is really helpful to meet with that requirements!
Keep posting such good technical snippets!
I also use facebook. I think it is best info. Such a great post. I really happy to rea this.
Shrink Packing Machine
I was searching about it. Checking in to facebook using the graph api and php is really great. I will implement it.
Dude nice article… but should it work only with lan or longitude… or it also need place id… if it need place id then how we got place id..
Thanks in advance
I would like to know this as well.