2016-12-29 4 views
0

Ich benutze Facebook SDK v5 und kann mich mit diesem Skript anmelden, während ich mich einlogge, habe ich einen Cookie erstellt und wenn ich mich abmelden möchte, ist das Löschen des Cookies nicht möglich!Abmelden mit Facebook PHP SDK v5

das ist mein Anmeldeskript

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

Diese Funktion PLÄTZCHEN

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,"/"); 
} 

Ich verwende Cookie gesetzt ist, einige Benutzerdaten zu speichern, anzuzeigen diese Details, wenn sie in einer Datei angemeldet sind. Ich brauchte Benutzer diese Seite zugreifen kann, wenn das COOKIE wie dieses

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

gesetzt ist und ich einen Link, um die Abmeldung in dieser Abmelde Datei ich das Löschen nur das Cookie wie diese

logout.php

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

aber nach dele Außerdem kann ich auf diese Benutzerdaten zugreifen und dieser Facebook-Account ist nicht ausgeloggt!

Ich suchte nach dieser Antwort, aber ich fand keine richtige Antwort im Internet!

Ich brauche den Benutzer abzumelden, wenn sie Logout URL (Logout URL-Zugriff logout.php)

bitte helfen Sie mir

Antwort

1

Vor einem Jahr klicken oder so habe ich versucht, wie Sie die gleiche Sache zu erreichen.

Aber wenn ich mich richtig erinnere, ist dies nicht etwas, das Sie kontrollieren können, solange der Benutzer auf Facebook eingeloggt ist, wird er auf Ihrer Seite "eingeloggt".

Sie können sie auf die Anmeldeseite bringen, aber die Facebook-Authentifizierung erkennt sie trotzdem, da sie bei Facebook angemeldet sind.

Ich denke, es gibt eine Möglichkeit, sie komplett auszuloggen, aber dann werden sie auch von Facebook ausgeloggt, und ich glaube nicht, dass das dich populär machen wird.

EDIT: habe ich einen Blick auf den Logout-Methode in JavaScript SDK Facebook, ich zitiere

Verfahren FB.logout() meldet den Benutzer aus Ihrer Website und in einigen Fällen, Facebook.

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

+0

so, wenn jemand von der Website abzumelden wollen, müssen er von Facebook auch abzumelden, hmm, das nicht gute Idee ist, –