2016-12-29 134 views
0

我正在使用Facebook SDK v5,並且我可以使用此腳本登錄,同時登錄我創建了一個cookie,如果我嘗試通過清除該cookie來註銷是不可能的!使用Facebook註銷PHP SDK v5

這是我的登錄腳本

<?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'); 
} 

,我設置鏈接註銷,在註銷文件我只是刪除該cookie類似的用戶可以訪問該頁面這

logout.php

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

但DELE後我也可以訪問這些用戶數據,並且Facebook帳戶沒有被註銷!

我搜索了這個答案,但我沒有在網上找到任何正確的答案!

我需要註銷,當他們點擊註銷URL(註銷URL訪問logout.php)用戶

請一年前幫我

回答

1

左右,我試圖做到同樣的事情你。

但是,如果我沒有記錯,這不是你可以控制的東西,只要用戶在Facebook上登錄,他就會在你的頁面上「登錄」。

您可以讓他們來到登錄頁面,但Facebook登錄認證仍然可以識別他們,因爲他們已登錄Facebook。

我認爲有一種方法可以完全註銷它們,但是它們也會從臉書註銷,我認爲這不會讓你受歡迎。

編輯:我看了看在Facebook中的JavaScript SDK註銷方法,我引用

的方法FB.logout()註銷用戶您的網站,並在某些情況下, Facebook的。

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

+0

所以,如果有人想從網站上登出,他需要從Facebook註銷也,嗯,這不是好主意 –