getLogoutUrl is not working with facebook graphp api using php codeigniter -
my facebook php sdk getlogouturl not working when click on logout url. takes me given redirect url not destroy facebook session can still see var_dump($fb_data) array on page , logout url.
here code using codeigniter lib_login library function facebook code
public function facebook() { $facebook_default_scope = explode(',', $this->ci->config->item("facebook_default_scope")); $facebook_app_id = $this->ci->config->item("facebook_app_id"); $facebook_api_secret = $this->ci->config->item("facebook_api_secret"); // init app app id , secret facebooksession::setdefaultapplication($facebook_app_id, $facebook_api_secret); // login helper redirect_uri $helper = new facebookredirectloginhelper(site_url('login/facebook')); // see if existing session exists if (isset($_session) && isset($_session['fb_token'])) { // create new session saved access_token $session = new facebooksession($_session['fb_token']); // validate access_token make sure it's still valid try { if (!$session->validate()) { $session = null; } } catch (exception $e) { // catch exceptions $session = null; } } if (!isset($session) || $session === null) { // no session exists try { $session = $helper->getsessionfromredirect(); } catch(facebookrequestexception $ex) { // when facebook returns error // handle better in production code print_r($ex); } catch(exception $ex) { // when validation fails or other local issues // handle better in production code print_r($ex); } } // see if have session if (isset($session)) { // save session $_session['fb_token'] = $session->gettoken(); // create session using saved token or new 1 generated @ login $session = new facebooksession($session->gettoken()); // graph api request user data $request = new facebookrequest($session, 'get', '/me?fields=id,name,accounts{access_token,category,name,id,perms},permissions'); $response = $request->execute(); // response $graphobject = $response->getgraphobject()->asarray(); $logouturl = site_url('login'); $fb_data = array( 'me' => $graphobject, 'loginurl' => $helper->getloginurl($facebook_default_scope), 'logouturl' => $helper->getlogouturl($session,$logouturl), ); $this->ci->session->set_userdata('fb_data', $fb_data); } else { $fb_data = array( 'me' => null, 'loginurl' => $helper->getloginurl($facebook_default_scope), 'logouturl' => $helper->getlogouturl($session,$logouturl), ); $this->ci->session->set_userdata('fb_data', $fb_data); } return $fb_data; } here function of controller
public function facebook() { $fb_data = $this->lib_login->facebook(); if (isset($fb_data['me'])) { echo "<pre>"; var_dump($fb_data); echo "</pre>"; echo '<a href="' . $fb_data['logouturl'] . '">logout</a>'; } else { echo '<a href="' . $fb_data['loginurl'] . '">login</a>'; } } when ever login account using code logout url , $fb_data array appears on page when logout , refresh page still their.can 1 tell doing wrong here.
try this:
<?php if ( ! defined('basepath')) exit('no direct script access allowed'); class login extends ci_controller { public function __construct() { parent::__construct(); $this->load->library(array('session', 'lib_login')); $this->fb_data = $this->lib_login->facebook(); } /** * facebook login * * @return void * @author appleboy **/ public function facebook() { // check login data if (isset($this->fb_data['me'])) { var_dump($this->fb_data); } else { echo '<a href="' . $this->fb_data['loginurl'] . '">login</a>'; } } public function logout() { if ( isset($this->fb_data['me']) ) { $this->session->unset_userdata('fb_data'); } redirect('login/facebook', 'refresh'); } } /* end of file login.php */ /* location: ./application/controllers/login.php */
Comments
Post a Comment