많은 내용을 검색 해 봤지만 마땅한 답을 찾을 수 없었다.
결국 코드를 일일이 추적을 해서 알아낸 내용은 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 변수를 설정하지 않은 문제이다.
- PHP 에서 $_REQUEST를 사용할 수 있게 변경하거나
- 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 |