Вы могли бы сказать, что этот пост является публичным, но я ищу почти 2 дня, не мог понять.
После перехода на новый сервер и установки нового ssl у меня возникли трудности с входом в facebook в двух разных сценариях.
Первый сценарий:
Пользователь не вошел в систему для входа в facebook и facebook, переадресовывает пользователя в facebook. После входа пользователя, facebook перенаправляет на redirect_url, а getuser возвращает 0.
(Пользователь может войти в систему, если вернуться на страницу входа в facebook на моем сайте, так что getuser работает, когда пользователь уже вошел в систему на facebook).
Второй сценарий:
Пользователь подписывается, переходит в диалог разрешений и когда пользователь дает разрешения, снова getuser возвращает 0, поэтому я думал пропустить первый сценарий, но этот сценарий является вирусным.
Я пробовал эти решения:
Сейчас мы используем nginx, на предыдущем сервере я сделал это обновление, и сегодня я расскажу вам, какой conf мы уже добавили.
1- Код Base_facebook.php необходимо обновить для codeigniter и новых версий php.
Facebook PHP SDK: исправление getUser () на PHP 5.4.x
2- Размер файла cookie Nginx изменился, в начале даже обычный вход в facebook не работает.
3- Я кое-что прочитал о пользовательских заголовках nginx, мы сделали эти обновления nginx-php-fpm-and-custom-header
Заголовки подчеркивания Nginx
4- CURLOPT_SSL_VERIFYPEER => false добавлено в base_facebook, опять другое решение для других пользователей.
Я думаю, что после всех этих обновлений мы кое-что упустили, но я действительно не могу понять, что не так? Поэтому я буду очень рад, если вы поделитесь своим опытом со мной, мы сможем выяснить, что не так.
5- parse_str ($ _ SERVER ['QUERY_STRING'], $ _ REQUEST); добавляется до включения библиотек.
Мой пример контроллера fb_login. Я танк_auth_social с tank_auth
function fblogin() { parse_str($_SERVER['QUERY_STRING'],$_REQUEST); $this->load->helper(array('form', 'url')); $this->load->library('form_validation'); $this->load->library('security'); $this->load->library('tank_auth'); $this->load->library('tank_auth_social'); $this->lang->load('tank_auth'); $fb_id = $this->facebook->getUser(); //inline_debug($fb_id); // To see if we have facebook id // User is found if( isset($fb_id) ) { $user_profile = $this->facebook->api('/'.$fb_id); }
Моя Conf:
PHP версия 5.5.9-1ubuntu4 Nginx, FPM PHP Мой сервер находится на digitalocean.
Большое спасибо.