esk*_*imo 16 php session codeigniter localhost
我正在使用这个Facebook lib for CodeIgniter,因此用户可以使用Facebook登录.在生产上工作得很好,但在localhost上却没有.困扰我的是它曾经在localhost上运行良好,但突然停止工作.
我一直在寻找一段时间,我期待这与CI的会话库有关,但我不是百分百肯定.
背景信息
if($this->session)在视图中返回true.编辑; 我实际上并没有在视图中使用它,但它只是为了测试这是否有效问题
if($this->session)在(Facebook)库文件中返回false.编辑; 这似乎是个问题.所以这在视图中工作,而不是在库中.关于它的奇怪之处在于它之前正在工作(没有代码更改)fb_boken在会话userdata中设置,这就是我怀疑设置有问题的原因$this->session我已经尝试过但没有用的
config.php设定$config['sess_expiration']为高的值(例如,999999),而不是7200config.php更改$config['cookie_domain']为localhost网站(http://www.example-local.net尝试使用和不使用斜杠)而不是空("")config.php不断变化的$config['sess_match_useragent'],以FALSE代替TRUE有关config.php的其他信息
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
$config['cookie_secure'] = FALSE;
Run Code Online (Sandbox Code Playgroud)
我希望使用PHP的本机会话可以解决问题,但事实并非如此.不确定我还能尝试什么.
供参考完整的Facebook.php库文件代码
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
if ( session_status() == PHP_SESSION_NONE ) {
session_start();
}
require_once( APPPATH . 'libraries/facebook/Facebook/GraphObject.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/GraphSessionInfo.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/FacebookSession.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/FacebookCurl.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/FacebookHttpable.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/FacebookCurlHttpClient.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/FacebookResponse.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/FacebookSDKException.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/FacebookRequestException.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/FacebookAuthorizationException.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/FacebookRequest.php' );
require_once( APPPATH . 'libraries/facebook/Facebook/FacebookRedirectLoginHelper.php' );
use Facebook\GraphSessionInfo;
use Facebook\FacebookSession;
use Facebook\FacebookCurl;
use Facebook\FacebookHttpable;
use Facebook\FacebookCurlHttpClient;
use Facebook\FacebookResponse;
use Facebook\FacebookAuthorizationException;
use Facebook\FacebookRequestException;
use Facebook\FacebookRequest;
use Facebook\FacebookSDKException;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\GraphObject;
class Facebook {
var $ci;
var $helper;
var $session;
public function __construct() {
$this->ci =& get_instance();
FacebookSession::setDefaultApplication( $this->ci->config->item('api_id', 'facebook'), $this->ci->config->item('app_secret', 'facebook') );
$this->helper = new FacebookRedirectLoginHelper( $this->ci->config->item('redirect_url', 'facebook') );
if ( $this->ci->session->userdata('fb_token') ) {
$this->session = new FacebookSession( $this->ci->session->userdata('fb_token') );
// Validate the access_token to make sure it's still valid
try {
if ( ! $this->session->validate() ) {
$this->session = false;
}
} catch ( Exception $e ) {
// Catch any exceptions
$this->session = false;
}
} else {
try {
$this->session = $this->helper->getSessionFromRedirect();
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
} catch(\Exception $ex) {
// When validation fails or other local issues
}
}
if ( $this->session ) {
$this->ci->session->set_userdata( 'fb_token', $this->session->getToken() );
$this->session = new FacebookSession( $this->session->getToken() );
}
}
/*
|--------------------------------------------------------------------------
| Login URL
|--------------------------------------------------------------------------
*/
public function get_login_url() {
return $this->helper->getLoginUrl( $this->ci->config->item('permissions', 'facebook') );
}
/*
|--------------------------------------------------------------------------
| Logout URL
|--------------------------------------------------------------------------
*/
public function get_logout_url() {
if ( $this->session ) {
return $this->helper->getLogoutUrl( $this->session, site_url() );
}
return false;
}
/*
|--------------------------------------------------------------------------
| Get user data
|--------------------------------------------------------------------------
*/
public function get_user() {
if ( $this->session ) {
try {
$user = (new FacebookRequest( $this->session, 'GET', '/me' ))->execute()->getGraphObject()->asArray();
return $user;
} catch(FacebookRequestException $e) {
return false;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)