Skip to content

Instantly share code, notes, and snippets.

@DiegoSeC
Last active September 25, 2015 13:30
Show Gist options
  • Save DiegoSeC/11899ec05cd653e3ad37 to your computer and use it in GitHub Desktop.
Save DiegoSeC/11899ec05cd653e3ad37 to your computer and use it in GitHub Desktop.
A Simple library for the new Facebook SDK.
<?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 */
@dreammonkey
Copy link

hi Diego, have You tried this with the JavaScriptHelper ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment