2016-12-29 5 views
0

Я использую Facebook SDK v5, и я могу войти в систему с помощью этого скрипта, во время входа в систему я создал файл cookie, и если я попытаюсь выйти из системы, очистив этот файл cookie, это невозможно!Выход с Facebook PHP SDK v5

это мой Логин Script

<?php 
require_once __DIR__ . '/src/Facebook/autoload.php'; 
require_once $_SERVER['DOCUMENT_ROOT'].'/fbloging/helper/helper.php'; 
$fb = new Facebook\Facebook([ 
'app_id' => '__MY_APP_ID__', 
'app_secret' => '__MY_APP_SECRET__', 
'default_graph_version' => 'v2.5' 
]); 

$helper = $fb->getJavaScriptHelper(); 

try { 
$accessToken = $helper->getAccessToken(); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
// When Graph returns an error 
echo 'Graph returned an error: ' . $e->getMessage(); 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
// When validation fails or other local issues 
echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
} 

if (isset($accessToken)) { 
$fb->setDefaultAccessToken($accessToken); 

try { 

$requestProfile = $fb->get("/me?fields=name,email,id,picture.width(800).height(800),cover.width(300).height(175)"); 
$profile = $requestProfile->getGraphNode()->asArray(); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
// When Graph returns an error 
echo 'Graph returned an error: ' . $e->getMessage(); 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
// When validation fails or other local issues 
echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
} 


$query = "SELECT * FROM `users` WHERE `user_id`='".$profile['id']."' AND `email`='".$profile['email']."'"; 
$result = $db->query($query); 
$fr = mysqli_fetch_assoc($result); 
if(mysqli_num_rows($result)>0){ 
if($fr['profile']==1){ 
set_user_cookie($profile['name'],$profile['id'],$profile['picture']['url'],$profile['email'],$profile['cover']['source']); 
header('location: ../home.php'); 
}else{ 
set_user_cookie($profile['name'],$profile['id'],$profile['picture']['url'],$profile['email'],$profile['cover']['source']); 
header('location: ../complete-profile.php'); 
} 

}else{ 
$name = $profile['name']; 
$id = $profile['id']; 
$email = $profile['email']; 
$result = $db->query("INSERT INTO `users`(`user_id`, `email`, `user_name`) VALUES ('$id','$email','$name')"); 
if($result){ 
set_user_cookie($name,$id,$profile['picture']['url'],$email,$profile['cover']['source']); 
header('location: ../complete-profile.php'); 
}else{ 
echo 'Something Went Wrong'; 
} 
} 

// setcookie('user',$profile['name']."~".$profile['id']."~".$profile['picture']['url']."~".$profile['email'], time()+3600+2,"/"); 
// header('location: ../'); 
exit; 
} else { 
echo "Unauthorized access!!!"; 
exit; 
} 

Это функция для установки COOKIE

helper.php

// Set cookie 
function set_user_cookie($name, $id, $pro, $email,$cover){ 
$string=$name."~".$id."~".$pro."~".$email."~".$cover; 
setcookie('udet',$string, time()+3600*2*24,"/"); 
} 

Я использую Cookie для хранения некоторых пользовательских данных для отображения это детали, когда они вошли в файл. Я нуждался пользователь может получить доступ к этой странице, когда этот COOKIE установлен как этот

полного-profile.php

require_once 'helper/helper.php'; 
if (isset($_COOKIE['udet'])) { 
$user = explode("~",$_COOKIE['udet']); 
$name = $user[0]; 
$id = $user[1]; 
$pic = $user[2]; 
$email = $user[3]; 
$cover = $user[4]; 
}else{ 
header('Location : index.php'); 
} 

и я поставил ссылку на отключала, в этом выход из системы файла я просто удалить это печенье как это

logout.php

<?php 
unset($_COOKIE['udet']); 
header('Location: index.php') 
?> 

, но после того, как DELE ting также я могу получить доступ к этим пользовательским данным и что учетная запись facebook не вышла из системы!

Я искал этот ответ, но я не нашел правильного ответа в Интернете!

мне нужно выйти из системы пользователя, когда они нажмите Logout URL (URL Выход logout.php доступа)

пожалуйста, помогите мне

ответ

1

год назад или около того, я пытался достичь того же, как вы.

Но если я правильно помню, это не то, что вы можете контролировать, если пользователь вошел в систему на facebook, он будет «вошел в систему» ​​на вашей странице.

Вы можете заставить их перейти на страницу входа в систему, но аутентификация в facebook все равно будет распознавать их, поскольку они вошли в систему в facebook.

Я думаю, что есть способ вывести их из системы полностью, но затем они также будут выходить из фейсбука, и я не думаю, что это сделает вас популярными.

EDIT: Я посмотрел на метод выхода из системы в Facebook, JavaScript SDK, и я цитирую

Метод FB.logout() регистрирует пользователя из вашего сайта, а в некоторых случаях, facebook.

https://developers.facebook.com/docs/reference/javascript/FB.logout

+0

так, если кто-то хочет, чтобы выйти из веб-сайта, он должен выйти из Facebook также, гм, что не является хорошей идеей –

 Смежные вопросы

  • Нет связанных вопросов^_^