Я новичок в Codeigniter, и я пытаюсь интегрировать вход в систему с приложением facebook в моем проекте codeigniter. Я запускаю это в localhost.
Проблемы, с которыми я сталкиваюсь:
Учетные данные для входа в систему не сохраняются в файлах cookie, хотя я установил, что файлы cookie соответствуют действительности.
$this->load->library("facebook", array("appId" => "xxx",
"secret" => "xxx", "cookie" => true));
Каждый раз, когда страница загружается, она проверяет учетные данные Facebook и создает / обновляет cookie, который я создал с помощью функции setcookie. Я только хочу, чтобы это происходило всякий раз, когда пользователь входит / выходит из системы.
И я хочу явно указать здесь сеанс и cookie, потому что я разрешаю простой вход в систему, кроме входа в Facebook.
Когда я передаю электронное письмо в функцию процесса, значение cookie отличается от фактического электронного письма. Например. если мой адрес электронной почты на Facebook abcd@gmail.com
он устанавливает значение cookie, чтобы быть abcd%40gmail.com
,
Вот мой код:
class Login extends CI_Controller{
public $user = null;public function __construct(){
parent::__construct();
parse_str($_SERVER['QUERY_STRING'],$_REQUEST);
$this->load->library("facebook", array("appId" => "xxx",
"secret" => "xxx", "cookie" => true));
$this->user = $this->facebook->getUser();
}
public function index(){if($this->user){
try{
$user_profile = $this->facebook->api('/me');
$email = $user_profile['email'];
echo $email.'<br />';
echo $user_profile['first_name'];
echo $user_profile['last_name'];
echo '<img src="https://graph.facebook.com/'.$this->user.'/picture?type=large">';$this->process($email);
}catch(FacebookApiException $e){
print_r($e);
$this->user = null;
}
}
if($this->user){
$logout = $this->facebook->getLogoutUrl(array(
"next" => base_url().'login/logout/'));
echo '<a href="'.$logout.'">Logout</a>';
}else{
$login = $this->facebook->getLoginUrl(array("scope" => 'email'));
echo '<a href="'.$login.'">Login</a>';
}
}
public function process($email){
$cookie = array(
'name' => 'utut',
'value' => $email,
'expire' => '86500'
);
$this->input->set_cookie($cookie);
}
public function logout(){
session_destroy();
redirect(base_url().'login');
}
}
Я получил код интеграции Facebook откуда-то. Я не понимаю, где он устанавливает данные сеанса, чтобы я мог проверить их в начале.
Короче говоря, я хочу хранить информацию в куки, не хочу создавать / обновлять ее все время, пока я перезагружаю страницу. Вместо этого я бы предпочел проверить существование, а затем принять меры.
Задача ещё не решена.
Других решений пока нет …