lang/php

CodeIgniter facebook php-sdk always getUser 0

C/H 2012. 11. 1. 01:31

많은 내용을 검색 해 봤지만 마땅한 답을 찾을 수 없었다.


결국 코드를 일일이 추적을 해서 알아낸 내용은 oauth에서 nonce와 같은 역활을 하는 state 값이 달라서 $facebook->getUser() 값이 항상 0을 리턴한다.


위 내용을 확인했지만 자세하게 볼 수 있는 시간이 없다. apache/php 설정에서 해결을 해야 될것 같은데....


1. 테스트 서버에서는 문제가 없는데 운영서버에서 발생한다.

2. 문제를 확인한 결과 SESSION 이 redirect 후 callback으로 되돌아 왔을 때 유지 되지 않는다.

3. 시간이 없다.


정확한 문제포인트와 해결방법을 찾을 시간도 없고, 귀찮다. ㅡ.ㅡ

facebook.php 내용을 CI session으로 바꿔버렸다. ㅡ.ㅡ

 protected function setPersistentData($key, $value) {
    if (!in_array($key, self::$kSupportedKeys)) {
      self::errorLog('Unsupported key passed to setPersistentData.');
      return;
    }

    $session_var_name = $this->constructSessionVariableName($key);
    //$_SESSION[$session_var_name] = $value;
    $CI =& get_instance();
    $CI->session->set_userdata(Array($session_var_name => $value));
  }

  protected function getPersistentData($key, $default = false) {
    if (!in_array($key, self::$kSupportedKeys)) {
      self::errorLog('Unsupported key passed to getPersistentData.');
      return $default;
    }

    $session_var_name = $this->constructSessionVariableName($key);
    //return isset($_SESSION[$session_var_name]) ? $_SESSION[$session_var_name] : $default;
    
   $CI =& get_instance();
   return $CI->session->userdata($session_var_name)?
      $CI->session->userdata($session_var_name) : $default;
  }

  protected function clearPersistentData($key) {
    if (!in_array($key, self::$kSupportedKeys)) {
      self::errorLog('Unsupported key passed to clearPersistentData.');
      return;
    }

    $session_var_name = $this->constructSessionVariableName($key);
    //unset($_SESSION[$session_var_name]);
    $CI =& get_instance();
    $CI->session->unset_userdata(session_var_name);
  }

문제를 찾았다.


문제는 PHP 설정에서 $_REQUEST global 변수를 설정하지 않은 문제이다.

  1. PHP 에서 $_REQUEST를 사용할 수 있게 변경하거나 
  2. base_facebook.php 에서 $_REQUEST => $_GET 으로 모두 변경하면 된다.


반응형

'lang > php' 카테고리의 다른 글

ubuntu xcache and APC(Alternative PHP cache)  (0) 2013.01.25
Nginx + CodeIgniter  (0) 2013.01.25
IP 주소확인  (0) 2012.06.12
ubuntu/debian apm 설치  (0) 2012.04.18
html에서 엑셀 표시형식 지정하기  (0) 2012.02.16