所以我正在尝试将PHP facebook SDK / API与codeigniter集成,因为我喜欢codeigniter,但由于某种原因,一旦我从基本URL更改页面,我就会一直丢失我的facebook会话,我已经打印了$ _session和我得到的是Array([fb_339393762762289_state] => cb8c201ed66ebcaa60407114aa92f001)任何想法为什么会这样?
以下是我的控制器的样子:
class Main extends CI_Controller {
var $user;
var $log_in_url;
var $log_out_url;
function __construct() {
parent::__construct();
$this->load->library('facebook');
$perams = array(
'scope' => 'user_about_me, read_friendlists',
'redirect_uri' => 'http://www.example.com/'
);
$this->user = $this->facebook->getUser();
$this->log_out_url = $this->facebook->getLogoutUrl();
$this->log_in_url = $this->facebook->getLoginUrl($perams);
print_r($this->user);
print_r($this->log_out_url);
print_r($this->log_in_url);
}
public function index() {
if ($this->user) {
try {
$data['user_profile'] = $this->facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$this->user = null;
}
}
if ($this->user) {
$data['logout_url'] = $this->log_out_url;
} else {
$data['login_url'] = $this->log_in_url;
}
$data['user'] = $this->user;
$this->load->view('templet/header', $data);
$this->load->view('main view');
$this->load->view('templet/footer');
}
public function account() {
if ($this->user) {
try {
$data['user_profile'] = $this->facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$this->user = null;
}
}
if ($this->user) {
$data['logout_url'] = $this->log_out_url;
} else {
$data['login_url'] = $this->log_in_url;
}
$data['user'] = $this->user;
$this->load->view('templet/header', $data);
$this->load->view('account');
$this->load->view('templet/footer');
}
从我从api的源代码中可以理解的是,它负责处理会话,所以我不明白为什么它会一直失去它。
我在想它可能与我的Htaccess设置有关......就是这样。我更改页面时的网址如下所示www.example.com/index.php/controller_name/method_name /
我还需要对$ _GET变量进行任何操作吗?因为这是我注意到的一件事......似乎在URL中传递了一些东西,但它们不会继续到其他页面。
对此的任何帮助将不胜感激。我真的很茫然。
答案 0 :(得分:1)
如果您使用CodeIgniter会话库,您必须知道“Session类不使用本机PHP会话。它会生成自己的会话数据”
答案 1 :(得分:0)
我的问题有点简单,我在改变页面的任何时候都不断丢失会话数据,并且解决方案非常简单。在CI的配置文件中,您必须为您添加网站基本URL,然后我放置并为http://www.mysite.com/创建会话,因此php sdk / api为第一个URL创建了一个会话,为第二个URL创建了另一个会话。因此,一旦我改变页面,我就丢失了所有数据。所以这是一个简单的问题,但拍摄时遇到了很多麻烦。