php - teclado - facebook cerrar sesion link
¿Cómo cerrar la sesión de usuario usando Facebook SDK? (5)
Cerrar la sesión de usuarios de Facebook puede ser difícil. Esto funciona para mí
// Get an instance of the Facebook class
$facebook = $this->facebook_instance_factory();
// Destroy the session so that no Facebook data is held
$facebook->destroySession();
$logout = $facebook->getLogoutUrl();
$facebook->setAccessToken('''');
// Redirect the user to the logout url, facebook will redirect him to our page
wp_redirect( $logout );
Estoy usando un inicio de sesión de facebook
para mi sitio web usando facebook php sdk
.
Lo que noté es que el enlace de logout
no hace nada. Después de desconectarme, el usuario puede navegar por el sitio. Aquí está mi código en facebook.php
:
<?php
require ''src/facebook.php'';
$facebook = new Facebook(array(
''appId'' => ''*************'',
''secret'' => ''******************************'',
));
$user = $facebook->getUser();
$loginUrl = $facebook->getLoginUrl();
echo "<a href=''$loginUrl''>login</a>";
$logoutUrl = $facebook->getLogoutUrl();
echo $loginUrl;
if($user){
session_start() ;
$_SESSION[''user_info''] = $user;
$_SESSION[''user_pro'']= $facebook->api(''/me'');
print_r($_SESSION);
}
else{
echo ''not logged in '';
}
echo "<a href=''example.com/logout.php''>log out </a>"
?>
Este code
funciona bien al iniciar sesión. El enlace de salida debe destruir la sesión. Aquí está el encabezado de la página:
<?php
print_r($_SESSION) ;
header(''example.com'') ;
?>
El problema con mi página logout.php
es que no detecta la sesión en absoluto. No sé si este es un problema de facebook api
o mi problema de php
.
¿Cómo se registra al usuario usando el SDK de Facebook?
session_start()
llamar a session_start()
en todas las páginas donde se usarán las sesiones.
Para registrar a alguien fuera de la sesión (es decir, borrarlo) puede usar session_destroy()
.
Finalmente, header(''example.com'');
en realidad no hará nada, ¿tiene la intención de realizar una redirección? Si es así, debe usar `header (''Ubicación: http://example.com/ '');
EDITAR: Perdón por no haber leído esto correctamente, ¿cuál es el segundo fragmento de código? ¿Es esa tu página de logout.php?
Hasta donde yo sé, con la API de Facebook, cuando llamas a getLogoutUrl()
, ahí es donde debes enviar a tus usuarios cuando hacen clic en el enlace, y no en tu propio logout.php
.
Aquí está el código de cierre de sesión de PHP para mi sitio web que registra a un usuario dentro y fuera de Facebook. No es necesario que destruya la sesión para desconectar al usuario; todo lo que tiene que hacer técnicamente es indicarle a su propio sitio web que esta sesión en particular no se puede usar para permitir que el usuario entre.
logout.php:
<?php
require_once("facebook-php-sdk-6c82b3f/src/facebook.php");
$config = array();
$config[''appId''] = ''2911111111146'';
$config[''secret''] = ''a6eaaaaaaaaaaaaaaaaaaaaaaaaaad1a'';
$config[''fileUpload''] = false;
$facebook = new Facebook($config);
$logouturl = $facebook->getLogoutUrl();
$_SESSION[''user_facebook_email''] = "";
$_SESSION[''ask_user_to_login''] = true;
header("Location: showquestions.php");
?>
index.php:
<?php
require_once("facebook-php-sdk-6c82b3f/src/facebook.php");
$config = array();
$config[''appId''] = ''2911111111146'';
$config[''secret''] = ''a6eaaaaaaaaaaaaaaaaaaaaaaaaaad1a'';
$config[''fileUpload''] = false;
$facebook = new Facebook($config);
$userId = $facebook->getUser();
if ($_SESSION[''ask_user_to_login''] == true || $userId == 0){
$loginUrl = $facebook->getLoginUrl();
$_SESSION[''ask_user_to_login''] = false;
echo "<button type=''button'' onClick=/"window.location=''$loginUrl''/">" .
"<img src=''picture.gif'' alt=''Login with facebook''/>" .
"</button>";
exit;
}
else
{
$userInfo = $facebook->api(''/'' + $userId);
session_cache_expire (150000); //set the cache expire to 15000 minutes
$_SESSION[''user_facebook_email''] = $userInfo[''email''];
$_SESSION[''facebook''] = $facebook;
header("Location: showquestions.php");
}
$userInfo = $facebook->api(''/'' + $userId);
echo "Welcome" . $userInfo[''email''];
?>
login.php:
<?php
session_start();
if (isset($_SESSION[''user_facebook_email'']) !== true ||
$_SESSION[''user_facebook_email''] == "")
{
header("Location: index.php");
exit;
}
?>
Luego, en cada archivo php que quiera evitar el acceso sin un usuario conectado, coloque esto en la parte superior:
<?php
require("log2.php");
?>
Con este código, el usuario inicia sesión automáticamente y, si invoca el código de cierre de sesión, el sitio no los dejará entrar hasta que vuelva a iniciar sesión.
Puede cerrar la sesión desde su sitio y desde Facebook de la siguiente manera, proporcionando la url de su sitio al siguiente parámetro y destruyendo la sesión.
$token = $facebook->getAccessToken();
$url = ''https://www.facebook.com/logout.php?next='' . YOUR_SITE_URL .
''&access_token=''.$token;
session_destroy();
header(''Location: ''.$url);
También debe cerrar sesión en su sitio web Y debe evitar que su sitio web recuerde automáticamente a su usuario y vuelva a iniciar sesión de inmediato.
Deshabilite el código que registra automáticamente a su usuario e intente cerrar la sesión nuevamente. La destrucción de la sesión no evitará que su sitio cree una nueva sesión válida para el usuario recordado.
RESPONDER
$_SESSION[''fb_(your_APP_ID)_access_token''] = '''' ;
cuando se inicia sesión, se inicia una sesión, parece que si configuramos cualquiera de estas variables de session
como nulas, se rompe la función de inicio de sesión y le pedimos al usuario que inicie sesión de nuevo