2012-02-11 6 views
2

私はcodeigniterが好きなので、codeigniterにPHP facebook SDK/APIを統合しようとしていますが、何らかの理由でベースURLからページを変更するとすぐにFacebookのセッションが失われてしまいます。$ _sessionこれはなぜ起こっているのですか?Array([fb_339393762762289_state] => cb8c201ed66ebcaa60407114aa92f001)私は、APIのソースコードから理解できることは、それが処理セッションを担当しているということですので、私は理由を理解していないからページの変更に関するセッションが失われるのはなぜですか?

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'); 
    } 

:ここ

は私のコントローラは次のようになりますそれはそれを失うことを続ける。

私はそれが私のHtaccessの設定と関係があるかもしれないと思っていました。私のページを変更するときのURLは、次のようになります。www.example.com/index.php/controller_name/method_name/

また、私は$ _GET varsで何かする必要がありますか?それは私が気付いたことの一つです。URLにはいくつかのものがあるようですが、他のページには続きません。

これについての助けがあれば幸いです。私は本当に迷っています。

+0

他の$ _SESSION変数(自分で設定した変数)を同じ方法で緩めますか、またはFBだけを緩めますか? – Cheery

+0

自分のセッションをまだ設定しようとしていません。私にそのアイデアをくれてありがとう。私はそれを確認することさえ考えなかった。私は自分のものを設定しようとします。なぜ私の変数はコントローラ上でグローバルなスコープを持っているので、1つのページから別のページにデータを保持していないのですか?データはまだそこにあるはずです。 –

+0

ちょうどチェックされ、セッションは正常に動作します。私がCI関数を使ってそれらを行う場合...私は、CI関数を使用するようにFacebook SDKを適応させるべきだと思いますか? –

答えて

0

私の問題は、やや簡単だった、私は失うまま私のセッションデータはいつでもページを変更してくれました。 CIの設定ファイルでは、あなたはあなたのウェブサイトのベースURLを入れなければなりません、私は入れて、セッションはhttp://www.mysite.com/のために作成されていたので、php sdk/apiは最初のURLのセッションと2番目のセッションを作成しました。私はページを変更するとすぐにデータのだからシンプルな問題ですが、トラブルシューティングには多大な労力を要しました。

1

あなたはCodeIgniterのセッションライブラリを使用する場合は、「Sessionクラスは、ネイティブPHPセッションを利用していない。それは、独自のセッションデータを生成」ことを知っている必要があります

CodeIgniter Session Class

+0

私はあなたに答えてくれてありがとうが、私はそれを理解した。それは私のベースサイトドメインでした。それはwwwが見つからなかった。つまり、http:// site.com用とhttp:// www.site.com用の2つのクッキーを設定していました。 –

関連する問題