you want this plugin work on latest osclass and facebook api now you must upgrade this plugin to facebook sdk v5. Follow step.
1. replace all file in facebook/src/* (sdk v5)
2. Replace OSCFacebook.php
<?php
/**
* OSClass – software for creating and publishing online classified advertising platforms
*
* Copyright (C) 2010 OSCLASS
*
* This program is free software: you can redistribute it and/or modify it under the terms
* of the GNU Affero General Public License as published by the Free Software Foundation,
* either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// Include the autoloader provided in the SDK
require_once dirname( __FILE__ ) . '/src/autoload.php';
// Include required libraries
use Facebook\Facebook;
use Facebook\Exceptions\FacebookResponseException;
use Facebook\Exceptions\FacebookSDKException;
class OSCFacebook extends DAO
{
private static $instance;
private static $facebook;
private static $user;
private static $loginUrl;
private static $logoutUrl;
private static $user_profile;
public static function newInstance()
{
if(!self::$instance instanceof self) {
self::$instance = new self;
}
return self::$instance;
}
public function __construct()
{
parent::__construct();
$this->setTableName( 't_facebook_connect' );
$this->setPrimaryKey( 'fk_i_user_id' );
$this->setFields( array( 'fk_i_user_id', 'i_facebook_uid' ) );
self::$facebook = new Facebook(array(
'app_id' => 'YOUR APP ID',
'app_secret' => 'YOUR APP SECRET',
'default_graph_version' => 'v2.10'
));
}
public function init() {
// Get redirect login helper
$helper = self::$facebook->getRedirectLoginHelper();
// Try to get access token
try {
if(isset($_SESSION['facebook_access_token'])){
$accessToken = $_SESSION['facebook_access_token'];
}else{
$accessToken = $helper->getAccessToken();
}
} catch(FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if(isset($accessToken)){
if(isset($_SESSION['facebook_access_token'])){
self::$facebook->setDefaultAccessToken($_SESSION['facebook_access_token']);
}else{
// Put short-lived access token in session
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler helps to manage access tokens
$oAuth2Client = self::$facebook->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// Set default access token to be used in script
self::$facebook->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// Redirect the user back to the same page if url has "code" parameter in query string
if(isset($_GET['code'])){
header('Location: ./');
}
// Getting user facebook profile info
try {
$profileRequest = self::$facebook->get('/me?fields=name,first_name,last_name,email,link,gender,locale,picture');
self::$user_profile = $profileRequest->getGraphNode()->asArray();
} catch(FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
self::$facebook->destroySession();
// Redirect user back to app login page
header("Location: ./");
exit;
} catch(FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
self::$user = $this->getUser();
if ( !self::$user ) {
return self::$facebook;
}
try {
$this->dao->select( $this->getFields() );
$this->dao->from( $this->getTableName() );
$this->dao->where( 'i_facebook_uid', self::$user );
$rs = $this->dao->get();
if( ( $rs !== false ) && ( $rs->numRows() === 1 ) ) {
$fbUser = $rs->row();
if( count($fbUser) > 0 ) {
require_once osc_lib_path() . 'osclass/UserActions.php';
$uActions = new UserActions( false );
$logged = $uActions->bootstrap_login( $fbUser['fk_i_user_id'] );
switch( $logged ) {
case 0: osc_add_flash_error_message( __( 'The username doesn\'t exist', 'facebook' ) );
break;
case 1: osc_add_flash_error_message( __( 'The user has not been validated yet', 'facebook' ) );
break;
case 2: osc_add_flash_error_message( __( 'The user has been suspended', 'facebook' ) );
break;
}
return self::$facebook;
}
}
if(is_null(self::$user_profile)) {
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach ($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time() - 1000);
setcookie($name, '', time() - 1000, '/');
}
}
osc_add_flash_error_message(__('Some error occured trying to connect with Facebook.', 'facebook'));
header( 'Location: ' . osc_register_account_url() );
exit();
} else{
if( !isset(self::$user_profile['email']) ) {
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach ($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time() - 1000);
setcookie($name, '', time() - 1000, '/');
}
}
osc_add_flash_error_message(__('Some error occured trying to connect with Facebook.', 'facebook'));
header( 'Location: ' . osc_register_account_url() );
exit();
}
}
$manager = User::newInstance();
$oscUser = $manager->findByEmail( self::$user_profile['email'] );
// exists on our DB, we merge both accounts
if( count($oscUser) > 0 ) {
require_once osc_lib_path() . 'osclass/UserActions.php';
$uActions = new UserActions( false );
$manager->dao->from( $this->getTableName() );
$manager->dao->set( 'fk_i_user_id', $oscUser['pk_i_id'] );
$manager->dao->set( 'i_facebook_uid', self::$user_profile['id'] );
$manager->dao->insert();
// activate user in case is not activated
$manager->update( array('b_active' => '1'), array('pk_i_id' => $oscUser['pk_i_id']) );
$logged = $uActions->bootstrap_login( $oscUser['pk_i_id'] );
osc_add_flash_ok_message( __( "You already have an user with this e-mail address. We've merged your accounts", 'facebook' ) );
} else {
// Auto-register him
$this->register_user( self::$user_profile );
}
// redirect to log in
header( 'Location: ' . osc_base_url() );
exit;
} catch (FacebookApiException $e) {
self::$user = null;
}
return self::$facebook;
} else {
// Get login url
if( !osc_is_web_user_logged_in() ) {
self::$loginUrl = $helper->getLoginUrl( osc_base_url(), array('scope' => 'email'));
}
}
}
public function import( $file )
{
$path = osc_plugin_resource( $file );
$sql = file_get_contents( $path );
if( !$this->dao->importSQL( $sql ) ) {
throw new Exception( __('Error importing the database structure of the jobboard plugin', 'jobboard') );
}
}
public function uninstall()
{
$this->resetCookies();
$this->dao->query( 'DROP TABLE ' . $this->getTableName() );
}
public function getFacebook()
{
return self::$facebook;
}
public function getUser()
{
if( self::$user == null ) {
self::$user = self::$user_profile['id'];
}
return self::$user;
}
public function getUsername()
{
if( self::$user_profile['email'] != null ) {
$splusername = explode('@', self::$user_profile['email']);
$username = $splusername[0];
}
return $username;
}
public function logoutUrl()
{
return self::$logoutUrl;
}
public function loginUrl()
{
return self::$loginUrl;
}
public function profile()
{
if( self::$user_profile == null ) {
self::$user_profile = self::$facebook->get( '/me?fields=name,first_name,last_name,email,link,gender,locale,picture' );
}
return self::$user_profile;
}
private function register_user($user)
{
$manager = User::newInstance();
$input['s_name'] = $user['name'];
$input['s_username'] = $this->getUsername();
$input['s_email'] = $user['email'];
$input['s_password'] = sha1( osc_genRandomPassword() );
$input['dt_reg_date'] = date( 'Y-m-d H:i:s' );
$input['s_secret'] = osc_genRandomPassword();
$input['b_active'] = 1;
$email_taken = $manager->findByEmail( $input['s_email'] );
if($email_taken == null) {
$manager->insert( $input );
$userID = $manager->dao->insertedId();
$manager->dao->from( $this->getTableName() );
$manager->dao->set( 'fk_i_user_id', $userID );
$manager->dao->set( 'i_facebook_uid', $user['id'] );
$result = $manager->dao->replace();
if( $result == false ) {
// error inserting user
return false;
}
osc_run_hook( 'user_register_completed', $userID );
$userDB = $manager->findByPrimaryKey( $userID );
if( osc_notify_new_user() ) {
osc_run_hook( 'hook_email_admin_new_user', $userDB );
}
osc_run_hook('hook_email_user_registration', $userDB);
osc_run_hook('validate_user', $userDB);
osc_add_flash_ok_message( sprintf( __('Your account has been created successfully', 'facebook' ), osc_page_title() ) );
return true;
}
}
public function resetCookies()
{
//self::$facebook->destroySession();
// Remove access token from session
unset($_SESSION['facebook_access_token']);
// Remove user data from session
unset($_SESSION['userData']);
}
}
/* file end: ./oc-content/plugins/facebook/OSCFacebook.php */
?>
3. Try