2016-12-29 1 views
0

Facebook SDK v5를 사용하고 있는데 로그인하는 동안 쿠키를 만들었으며 쿠키를 지우지 않고 로그 아웃하려고하면 불가능합니다! 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이

완전한-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 후 나는 또한 그 사용자 데이터에 액세스 할 수 있으며 페이스 북 계정은 로그 아웃되지 않았습니다!

이 답변으로 검색했지만 웹에서 적절한 답변을 찾지 못했습니다.

답변

1

에게 년 전 도와주세요 또는 그래서 당신과 같은 일을 달성하기 위해 노력

나는 그들이 로그 아웃 URL (로그 아웃 URL 액세스 logout.php)를 클릭 사용자가 로그 아웃 할 필요가있다.

하지만 내가 올바르게 기억하는 경우 사용자가 제어 할 수있는 것이 아니며 사용자가 페이스 북에 로그인되어 있으면 페이지에 "로그인"됩니다.

로그인 페이지로 만들 수는 있지만 페이스 북 인증은 페이스 북에 로그인되어 있기 때문에 여전히 인식 할 수 있습니다.

나는 완전히 로그 아웃 할 수있는 방법이 있다고 생각하지만, 페이스 북에서도 로그 아웃 될 것이라고 생각한다. 그리고 나는 당신을 인기있게 만들 것이라고 생각하지 않는다.

편집 : 어떤 경우에, 나는 페이스 북의 자바 스크립트 SDK에서 로그 아웃 방법을 확인해 보니, 나는

방법 FB.logout (를 인용) 사이트에서 사용자를 기록하고 페이스 북. 누군가가 웹 사이트에서 로그 아웃하려면

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

+0

그래서, 그는 흠, 그건 좋은 생각이 아니다, 또한 페이스 북에서 로그 아웃 할 필요가 –