Вход в систему Codeigniter с помощью facebook возвращает userId 0, после успешного входа в систему и перенаправления обратно на мою сторону

Я разработал приложение для входа в Facebook (Facebook SDK) с помощью codeigniter. Во-первых, я делаю это на своем локальном компьютере.

Это работает хорошо, когда вход в систему выполнен успешно, facebook перенаправляется обратно с помощью redirect_uri на мой боковой контроллер и получает userId для запроса информации о зарегистрированном пользователе.

Но когда я загружаю этот код на сервер, redirect_uri работает, но я получаю 0 для userId, поэтому, если userId 0, я не могу запрашивать данные зарегистрированных пользователей.

Мой вопрос: почему userId возвращает 0 после успешного входа в систему?

Контроллер кода:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class Setting extends CI_Controller {

       public function __construct()
       {   

          $CI = & get_instance();
          $CI->config->load("facebook",TRUE);
          $config = $CI->config->item('facebook');
          $this->load->library('facebook', $config);

       }
       public function index() 
       {
             if($this->form_validation->run() == FALSE){

                 $this->acc_login();
             }else {
                 redirect('check_session', 'refresh');  
             }
       }

       public function acc_login()
       {
             $user = $this->facebook->getUser();

             if($user) {

             try {              
                  $user_info = $this->facebook->api('/me');
                  redirect(base_url());             
             } catch(FacebookApiException $e) {
                  echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
                  $user = null;
             }
             } else {
                    $param = array('scope' => 'email,read_stream','redirect_uri' => $my_url);
                    $data['getURLLogin'] = "<a href=\"".$this->facebook->getLoginUrl($param)."\"><img src=\"".base_url()."public/frontend/images/login-fb.png\" width=\"155\" height=\"25\" /></a>";

             }
       }

    }

?>

person user1641601    schedule 14.09.2012    source источник
comment
Вам нужно добавить свой фрагмент кода, чтобы мы могли помочь. Без примера кода сложно понять, с какой проблемой вы столкнулись.   -  person Michael Pryor    schedule 14.09.2012
comment
Я уже размещаю фрагмент кода, любое решение, пожалуйста   -  person user1641601    schedule 14.09.2012


Ответы (1)


Попробуйте добавить

parse_str( $_SERVER['QUERY_STRING'], $_REQUEST );

до

$user = $this->facebook->getUser();

ОБНОВЛЕНИЕ

FB изменил параметр с «redirect_url» на «next» с версии 2 на версию 3, и это плохо задокументировано. Попробуйте "далее", должно сработать.

источник

person BeRocket    schedule 09.10.2012
comment
Извините за такой вопрос, но.. вы добавили свое доменное имя в настройки приложения на facebook? developers.facebook.com/apps Проверьте URL сайта вашего приложения. Домены приложений: - ваш домен + ваш домен с www. Сайт с логином через Facebook - ваш домен - person BeRocket; 10.10.2012
comment
Я не поставил www перед своим доменным именем, потому что это поддомен, см. URL-адрес сайта - test.mydomain.com Разве это не правильно? - person user1641601; 10.10.2012
comment
пока вы находитесь на странице настроек приложения: 1) Домены приложений = mydomain.com, www.mydomain.com 2) Веб-сайт с логином Facebook = test.mydomain.com - person BeRocket; 10.10.2012
comment
Ваш режим песочницы включен? Если да, добавьте себя в качестве разработчика этого приложения или включите режим песочницы. - person BeRocket; 10.10.2012
comment
Режим песочницы моего приложения: отключен - person user1641601; 11.10.2012
comment
FB изменил параметр с redirect_url на next с версии 2 на версию 3, и это плохо задокументировано. Попробуйте дальше, должно сработать для вас. источник - person BeRocket; 11.10.2012
comment
На самом деле, когда я вхожу в систему через facebook, redirect_uri работает хорошо, но мой userId по-прежнему получает 0 ID навсегда, и я смотрю на свой URL-адрес сайта. У него также есть URL-адрес facebook. Это означает, что facebook уже зарегистрирован, я пробую новая вкладка и введите facebook.com, да, facebook уже зарегистрирован. Почему у меня 0 id, если Facebook авторизовался? И я пытаюсь снова нажать «Войти», facebook возвращает мой настоящий идентификатор без ввода имени пользователя и пароля. Итак, вход в систему два раза, это будет исправлено! - person user1641601; 12.10.2012
comment
Если вы вошли в facebook, это не означает, что ваше приложение подключено к вашей учетной записи. Перейдите на страницу facebook.com/settings/?tab=privacy&ref=mb - › реклама, приложения и сайты –› приложения, которые вы используете, нажмите изменить настройки –› вы видите там свое приложение? Если он есть, удалите его и попробуйте снова подключиться. Если его там нет, проверьте/перекопируйте ключи API. - person BeRocket; 12.10.2012