2016-12-29 8 views
0

私はFacebook SDK v5を使用しています。このスクリプトでログインできます。ログインしている間にCookieを作成しました。そのCookieを消去してログアウトしようとすると、Facebook PHP SDK v5

これはこれは私が表示するために、いくつかのユーザーデータを保存するためにクッキーを使用してい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,"/"); 
} 

を設定する機能である私のログインスクリプト

<?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がこの

完全-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後私はそれらのユーザーデータにアクセスすることができ、Facebookアカウントはログアウトされていません!

私はこの回答を検索しましたが、ウェブ上で適切な回答が見つかりませんでした。

私は一年前

答えて

1

に私を助けるか、私はあなたと同じことを達成しようとしてください彼らはログアウトURL(ログアウトURLアクセスlogout.php)

をクリックすると、ユーザーがログアウトする必要があります。

しかし、私が正しく覚えていれば、これはあなたがコントロールできるものではなく、ユーザーがFacebookにログインしている限り、あなたのページに「ログイン」します。

ログインページに表示させることはできますが、Facebookにログインしているため、Facebookの認証は引き続き認識されます。

私はそれらを完全にログアウトする方法があると思うが、それらはまたfacebookからログアウトされ、私はそれが普及するようになるとは思わない。

編集:私はFacebookのJavaScriptのSDKでのログアウト方法を見ていた、と私は方法FB.logout(

を引用)あなたのサイトのユーザをログアウトして、いくつかのケースでは、フェイスブック。

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

+0

ので、誰かがウェブサイトからログアウトしたい場合は、彼はまた、Facebookのからログアウトする必要があり、うーん、それは良いアイデアではありません –