Last active
September 25, 2015 13:30
-
-
Save DiegoSeC/11899ec05cd653e3ad37 to your computer and use it in GitHub Desktop.
A Simple library for the new Facebook SDK.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | |
if ( session_status() == PHP_SESSION_NONE ) { | |
session_start(); | |
} | |
// Autoload the required files | |
require_once( APPPATH . 'libraries/vendor/autoload.php' ); | |
use Facebook\FacebookRedirectLoginHelper; | |
use Facebook\FacebookSession; | |
use Facebook\FacebookRequest; | |
use Facebook\Entities\AccessToken; | |
class Facebook | |
{ | |
protected $ci; | |
private $helper; | |
private $session; | |
private $token; | |
private $param; | |
public function __construct($param = []) | |
{ | |
$this->ci =& get_instance(); | |
$this->param = $param; | |
$appID = $param['app_id']; | |
$appSecret = $param['app_secret']; | |
// Initialize the SDK | |
FacebookSession::setDefaultApplication($appID, $appSecret); | |
$this->helper = new FacebookRedirectLoginHelper($param['redirect_url']); | |
$this->getSession(); | |
} | |
/** | |
* getLoginURL | |
* @param array $scope permissions | |
* @return string | |
*/ | |
public function getLoginUrl($scope = []) | |
{ | |
return $this->helper->getLoginUrl($scope); | |
} | |
/** | |
* getLongLivedSession | |
* Returns a new Facebook\FacebookSession resulting | |
* from extending a short-lived access token. | |
* @return FacebookSession | |
*/ | |
public function getLongLivedSession() | |
{ | |
$accessToken = ($this->session) ? $this->session->getLongLivedSession() : FALSE; | |
if($accessToken) | |
{ | |
$_longLivedAccessToken = $accessToken->getAccessToken()->extend(); | |
$longLivedAccessToken = new AccessToken($_longLivedAccessToken); | |
$code = AccessToken::getCodeFromAccessToken($_longLivedAccessToken); | |
$newLongLivedAccessToken = AccessToken::getAccessTokenFromCode($code)->extend(); | |
} | |
return (isset($newLongLivedAccessToken)) ? $newLongLivedAccessToken : FALSE; | |
} | |
/** | |
* getUser | |
* Returns user's info | |
* @return array | |
*/ | |
public function getUser($me = '/me') | |
{ | |
$request = null; | |
if($this->session) | |
{ | |
$request = $this->api('GET', $me); | |
} | |
return $request; | |
} | |
/** | |
* api | |
* Returns a new request using the given session. | |
* @param FacebookSession $session | |
* @param string $method | |
* @param string $path | |
* @param array|null $parameters | |
* @return Facebook Request Object | |
*/ | |
public function api($method, $path, $parameters = null) | |
{ | |
$this->getSession(); | |
$request = (new FacebookRequest($this->session, $method, $path, $parameters))->execute(); | |
return $request->getGraphObject()->asArray(); | |
} | |
/** | |
* getSession | |
* Create the Facebook's Session | |
* @return void | |
*/ | |
private function getSession() | |
{ | |
try { | |
$this->session = $this->helper->getSessionFromRedirect(); | |
} catch (FacebookRequestException $ex) { | |
log_message('error', '[FACEBOOK] '.$ex->getRawResponse()); | |
} catch (Exception $ex) { | |
log_message('error', '[FACEBOOK] '.$ex->getMessage()); | |
} | |
if ( $this->session ) | |
{ | |
$token = ($this->session) ? $this->session->getToken() : null; | |
$this->session = new FacebookSession( $token ); | |
} | |
} | |
} | |
/* End of file Facebook.php */ | |
/* Location: ./application/libraries/facebook/Facebook.php */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
hi Diego, have You tried this with the JavaScriptHelper ?