У меня есть проект CodeIgniter, использующий «официальную» реализацию PHP в Facebook Connect.По большей части это работает нормально, за исключением случаев, когда пользователь впервые разрешает разрешения.Я проследил проблему глубоко до провайдера facebook.php, функции getSession()
:
public function getSession() {
if (!$this->sessionLoaded) {
$session = null;
$write_cookie = true;
// try loading session from signed_request in $_REQUEST
$signedRequest = $this->getSignedRequest();
if ($signedRequest) {
// sig is good, use the signedRequest
$session = $this->createSessionFromSignedRequest($signedRequest);
}
// try loading session from $_REQUEST
if (!$session && isset($_REQUEST['session'])) {
$session = json_decode(
get_magic_quotes_gpc()
? stripslashes($_REQUEST['session'])
: $_REQUEST['session'],
true
);
/* HERE IS WHERE IT GOES WRONG */
$session = $this->validateSessionObject($session);
}
Мой комментарий в коде - это то, где что-то идет не так.Приведенный выше блок if оценивается успешно, но код внутри параметра функции json_decode()
возвращает строку:
a:4:{s:10:"session_id";s:32:"********";s:10:"ip_address";s:13:"********";s:10:"user_agent";s:50:"Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2";s:13:"last_activity";i:1304286136;}edc0c222265e0a16c0f3fe8a96decf77
Это похоже на сеанс моего сайта, а не сеанс facebook, к которому он пытается получить доступ (Я могу видеть в URL).Почему это происходит?Что я могу с этим поделать?