Во-первых, я скачал Facebook PHP SDK и применил первый ответ здесь: Using Facebook PHP-SDK 3.x to register/login user with Codeigniter 2.1.0PHP SDK + код воспламенитель
В мой контроллер:
Я пытаюсь заставить пользователя: $ this- -> facebook-> GetUser(); .. Если это 0, я вызываю другую функцию $ this-> facebook_login(); - иначе я сохраню некоторые данные в базе данных, например, имя.
В facebook_login() генерируется адрес авторизации: $ this-> facebook-> getLoginUrl() - и передается в представление, которое отображает его.
До сих пор я нажимаю на URL-адрес входа и перенаправляет на Facebook, запрашивает одобрение и аутентификацию и т. Д. - затем перенаправляет меня обратно на страницу в «1».
Проблема в том, что getUser возвращает ноль. Я напечатал переменную SESSION $ и обнаружил, что установлен только fb {appId} _state.
Я попытался создать другой PHP файл (login.php), который не в папке CI со следующим кодом:
<?php
define('BASEPATH', '');
require_once('application/libraries/facebook.php');
$fb = new Facebook(array('appId'=>'...', 'secret'=>'...'));
$user = $fb->getUser();
if($user == 0){
$login = $fb->getLoginUrl();
echo '<a href="'.$login.'">Login</a>';
} else {
print_r($fb->api('/me'));
}
?>
Если я посещаю login.php затем посетить страницу в «1 "выше - getUser возвращает идентификатор пользователя, а $ _SESSION содержит данные пользователя. Поэтому я думаю, проблема связана с CodeIgniter, но я не уверен, как ее решить.
Я искал и попробовал несколько решений, но это лучшее, что я мог сделать. Если возможно, я не хочу использовать JS SDK.
Спасибо
В конструкторе, найденном в ссылке в начале вопроса, добавьте это перед загрузкой библиотеки facebook: parse_str ($ _SERVER ['QUERY_STRING'], $ _REQUEST); – GalalAly
Является ли переменная 'cookie_domain' правильно настроена для вашего домена в application/config/config.php? –
Да. Я понял решение и разместил его как комментарий. Спасибо :) – GalalAly