2012-02-11 2 views
2

그래서 codeigniter를 좋아하기 때문에 PHP facebook SDK/API를 codeigniter와 통합하려고합니다.하지만 기본 URL에서 페이지를 변경하자마자 내 페이스 북 세션을 잃어 버리는 어떤 이유로 인해 $ _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에 전달 된 것들이있는 것 같지만 그들은 다른 페이지로 계속되지 않습니다.

이 문제에 대한 도움을 주시면 감사하겠습니다. 나는 정말 실망 스럽다. 당신이 CodeIgniter의 세션 라이브러리를 사용하는 경우

+0

다른 $ _SESSION 변수 (사용자가 직접 설정 한 변수)는 같은 방법으로 또는 FB 만 풀 었습니까? – Cheery

+0

아직 내 세션을 설정하지 않았습니다. 저에게 그 아이디어를 주셔서 감사합니다. 나는 그것을 확인하는 것을 생각조차하지 않았다. 나는 내 자신의 일부를 설정하려고합니다. 궁금 해서요. 왜 내 변수가 한 페이지에서 다른 페이지로 데이터를 보유하지 않는 것입니까? 왜냐하면 컨트롤러에 전역 범위가 있기 때문입니다. 그래서 데이터가 여전히 거기에 있어야하는 것 같습니다. –

+0

방금 ​​확인했는데 세션이 정상적으로 작동합니다. 내가 CI 기능을 통해 그들을한다면 ... 당신은 내가 CI 기능을 사용하여 페이스 북 SDK를 적용해야한다고 생각합니까? –

답변

0

내 문제가 다소 간단했다가, 내가 잃어버린 유지 내 세션 데이터는 언제든지 페이지를 변경했으며 솔루션을 튜닝하는 것은 매우 간단했습니다. CI의 구성 파일에서 당신은 웹 사이트의 기본 URL을 넣어야하고, 넣어서 http://www.mysite.com/에 대한 세션을 만들었습니다. 그래서 PHP sdk/api가 첫 번째 URL과 두 번째 URL을위한 세션을 만들었습니다. 페이지를 변경하자마자 데이터를 그래서 간단한 문제지만 많은 문제를 겪었습니다.

1

는 "세션 클래스는 기본 PHP 세션을 사용하지 않습니다. 그것은 자신의 세션 데이터를 생성하는"것을 알고 있어야합니다

CodeIgniter Session Class

+0

대답 해 주셔서 감사합니다.하지만 알아 냈습니다. 내 기본 사이트 도메인이었습니다. 그것은 www가 누락되었습니다. 이는 http : // site.com과 http : // www.site.com에서 각각 두 개의 쿠키를 설정한다는 의미였습니다. –

관련 문제