Permasalahan Facebook PHP SDK di CodeIgniter
Bagi yang terbiasa menggunakan framework CodeIgniter dan sedang mulai coba bikin Facebook Apps dengan menggunakan Facebook PHP SDK biasanya akan mengalami masalah dengan security system di CodeIgniter. Semoga penjelasan berikut ini bisa membantu yang juga sedang mengalami masalah dengan Facebook PHP SDK + CodeIgniter.
CodeIgniter menghapus isi predefined variable $_REQUEST dengan alasan keamanan. Celakanya variable tersebut digunakan secara intensif dalam Facebook PHP SDK. Jadi harus dilakukan sedikit tweak supaya Facebook PHP SDK bisa akur dengan CodeIgniter. Catatan, code berikut merupakan potongan class construction dari controller.
function __construct() {
parent::__construct();
$this->referer = $this->input->server('HTTP_REFERER');
// Stop cache
$this->output->set_header("Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
$this->output->set_header("Pragma: no-cache");
// IE Fix
if(strpos($this->agent->agent_string(), 'MSIE') !== FALSE) {
$this->output->set_header('p3p: CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"');
}
// Repopulate _REQUEST ... Facebook needs it.
$request_uri = $_SERVER['REQUEST_URI'];
$request_uri = explode('?',$request_uri);
if(count($request_uri) > 1) {
parse_str($request_uri[1], $_REQUEST);
}
// load Facebook SDK library
$this->load->library('Facebook', array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
'fileUpload' => false,
'cookie' => true
));
//get fb user_id
try {
$this->signed_request = $this->facebook->getSignedRequest();
$this->fb_id = $this->facebook->getUser();
$me = $this->facebook->api('/'.$this->fb_id);
$this->access_token = $this->facebook->getAccessToken();
} catch(FacebookApiException $e) {
log_message('error', 'Failed getting Facebook ID. '.$e->getMessage());
}
}
Semoga trik diatas bisa membantu mengatasi permasalahan Facebook PHP SDK + CodeIgniter. Punya hasil yang berbeda? Silahkan tulis di komentar.
Leave a Reply