ser que por para nombre nadie hago hacer evitar encuentren encuentre como php facebook oauth facebook-php-sdk

php - que - como ser invisible en facebook 2017



Facebook PHP SDK: no cerrará sesión correctamente (8)

Puede resolver este problema especificando el problema de cierre de sesión externo. Puedes echar un vistazo aquí

para obtener información detallada. Es un buen tutorial para este problema.

Espero que esto ayude

He estado buscando horas para encontrar la solución a este problema pero no puedo encontrar una que funcione para mí. Cuando hago clic en "Cerrar sesión" en mi sitio, la información del usuario sigue siendo visible y aún se muestra el botón de cerrar sesión. Aquí está el código:

require ''facebook-php-sdk/src/facebook.php''; $facebook = new Facebook(array( ''appId'' => ''xxxx'', ''secret'' => ''xxxx'', )); // Get User ID $user = $facebook->getUser(); var_dump($user); if ($user) { try { // Proceed knowing you have a logged in user who''s authenticated. $user_profile = $facebook->api(''/me''); } catch (FacebookApiException $e) { error_log($e); $user = null; } } // Login or logout url will be needed depending on current user state. if ($_GET[''logout''] == "yes") { setcookie(''fbs_''.$facebook->getAppId(), '''', time()-100, ''/'', ''http://gno.....ment/index.php''); session_destroy(); header("Location: ".$_SERVER[''PHP_SELF''].""); } if ($user_profile) { $logoutUrl = $facebook->getLogoutUrl; } else { $loginUrl = $facebook->getLoginUrl(array(''scope'' => ''email,publish_stream,user_status'', ''canvas'' => 1, ''fbconnect'' => 0, ''redirect_uri'' => ''http://gno.....ment/index.php'')); }

..... .....

<?php if ($user): ?> <h3>You</h3> <img src="https://graph.facebook.com/<?php echo $user; ?>/picture"> <h3>Your User Object (/me)</h3> <pre><?php print_r($user_profile); ?></pre> <?php else: ?> <strong><em>You are not Connected.</em></strong> <?php endif ?> <?php if ($user): ?> <a href="<?php echo $logoutUrl; ?>">Logout of FB</a> <?php else: ?> <div> Login using OAuth 2.0 handled by the PHP SDK: <a href="<?php echo $loginUrl; ?>">Login with Facebook</a> </div> <?php endif ?>

Parece que if ($_GET[''logout''] == "yes") podría ser la respuesta para mí, pero no puedo hacerlo funcionar. No sé de dónde se logout o dónde se define?

Esto parece ser un problema común, pero no puedo resolverlo. Realmente agradecería algo de ayuda.


Recuerdo que esto fue un gran dolor en una de mis aplicaciones. Parece que finalmente lo que pareció funcionar fue:

jQuery(function() { /* ... */ FB.logout(); window.location = ''some url''; });

Debería ser lo mismo sin jQuery (simplemente ejecute FB.logout () en la carga de la página). AFAIR: No pude hacer que esto funcione en el lado del servidor en PHP. Espero eso ayude :).


Para responder directamente a su pregunta

... ¿No sé de dónde se obtiene el cierre de sesión o dónde se define?

Cuando crea su url de cierre de sesión, agregue el parámetro adicional ''cierre de sesión''

$logoutUrl = $facebook->getLogoutUrl(array( ''next''=>''http://yourdomain.com/facebook-test-search.php?logout=yes'' ));

Luego, en su secuencia de comandos, borre sesión y cookies cuando isset($_GET[''logout''])


Aquí es cómo termino sesión usando el último PHP-SDK:

login.php

require_once("php-sdk/facebook.php"); // Create our Application instance (replace this with your appId and secret). $facebook = new Facebook(array( ''appId'' => ''xxx'', ''secret'' => ''xxx'', )); // Get User ID $user = $facebook->getUser(); // We may or may not have this data based on whether the user is logged in. // // If we have a $user id here, it means we know the user is logged into // Facebook, but we don''t know if the access token is valid. An access // token is invalid if the user logged out of Facebook. if ($user) { try { // Proceed knowing you have a logged in user who''s authenticated. $user_profile = $facebook->api(''/me''); } catch (FacebookApiException $e) { error_log($e); $user = null; } } // Login or logout url will be needed depending on current user state. if ($user) { $logout_params = array(''next''=>''http://www.pittsburghpartycentral.com/logout.php''); $logoutUrl = $facebook->getLogoutUrl($logout_params); } else { $login_params = array( ''scope'' => ''email'', ''display'' => ''popup'' ); $loginUrl = $facebook->getLoginUrl($login_params); } // This call will always work since we are fetching public data. $naitik = $facebook->api(''/naitik''); ?> <!doctype html> <html xmlns:fb="http://www.facebook.com/2008/fbml"> <head> <title>php-sdk</title> <style> body { font-family: ''Lucida Grande'', Verdana, Arial, sans-serif; } h1 a { text-decoration: none; color: #3b5998; } h1 a:hover { text-decoration: underline; } </style> </head> <body> <h1>php-sdk</h1> <?php if ($user): ?> <a href="<?php echo $logoutUrl; ?>">Logout (<?php echo $user_profile[first_name]; ?>)</a> <?php else: ?> <div> Login using OAuth 2.0 handled by the PHP SDK: <a href="<?php echo $loginUrl; ?>" onclick="javascript:void window.open(''<?php echo $loginUrl; ?>'',''fb_popup'',''width=600,height=300,toolbar=0,menubar=0,location=0,status=0,scrollbars=0,resizable=0,left=0,top=0'');return false;">Login with Facebook</a> </div> <?php endif ?> <h3>PHP Session</h3> <pre><?php print_r($_SESSION); ?></pre> <?php if ($user): ?> <h3>You</h3> <img src="https://graph.facebook.com/<?php echo $user; ?>/picture"> <h3>Your User Object (/me)</h3> <pre><?php print_r($user_profile); ?></pre> <?php else: ?> <strong><em>You are not Connected.</em></strong> <?php endif ?> <h3>Public profile of Naitik</h3> <img src="https://graph.facebook.com/naitik/picture"> <?php echo $naitik[''name'']; ?> </body> </html>

logout.php

<?php session_start(); //start session $_SESSION = array(); //clear session array session_destroy(); //destroy session ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Log Out</title> </head> <body> <p>You have successfully logged out!</p> <p>Return to the <a href="connect.php">connect</a> page</p> </body> </html>


Pude cerrar la sesión del usuario desde mi aplicación usando:

$facebook->destroySession();

los

$facebook->getLogoutUrl();

hace que el usuario cierre la sesión desde Facebook, no desde su aplicación.


Tuve algún tipo de problema similar con eso. Incluso

$facebook->destroySession();

no funcionó correctamente hasta que eliminé

$facebook->getLogoutUrl();

llamar por completo getLogOutUrl() agregó algún parámetro que entró en conflicto más adelante con mi .htaccess y me llevó a * "mod_fcgid: stderr: el token de estado CSRF no coincide con el error" * proporcionado.


Hacerlo con PHP SDK es realmente fácil, la documentación es realmente horrible. No necesita redireccionar a Facebook. Simplemente tiene que borrar la sesión que establece la clase de Facebook, hay una función para eso en la clase base de Facebook llamada destroySession () . Aquí lo estoy haciendo en un get.

require_once(''libs/facebook.php''); $facebook = new Facebook(array( ''appId'' => ''1121111110112'', ''secret'' => ''bcfsaasaaaaaa2b7adsae3a4dd5'' )); if(isset($_GET[''action'']) && $_GET[''action''] === ''logout''){ $facebook->destroySession(); }

$ Facebook-> getLogoutUrl () desconecta al usuario de Facebook.


Debido a que todavía tengo PHP 5.3 en mi servidor CentOS 6.7 en el año 2016 y no quiero tomar la molestia de actualizar la versión de PHP, sigo usando el viejo facebookarchive / facebook-php-sdk en lugar del nuevo facebook / facebook-php -sdk-v4 biblioteca.

Y así es como manejo el cierre de sesión en mi aplicación:

<?php require_once(''facebook-php-sdk-3.2.3/src/facebook.php''); const TITLE = ''My amazing app''; const REDIRECT = ''https://example.com/myapp/''; #Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false; #Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2; $client = new Facebook(array( ''appId'' => REPLACE_ME, ''secret'' => REPLACE_ME, )); if (isset($_REQUEST[''logout''])) { $client->destroySession(); header(''Location: '' . REDIRECT); exit(0); } if ($client->getUser()) { try { $me = $client->api(''/me?fields=id,first_name,gender''); $body = ''<PRE>'' . print_r($me, TRUE) . ''</PRE>''; } catch (FacebookApiException $ex) { error_log($ex); $body = ''<PRE>'' . htmlspecialchars($e->getMessage()) . ''</PRE>''; } } else { $body = sprintf(''<P><A HREF="%s">Login</A></P>'', $client->getLoginUrl()); } ?> <!DOCTYPE HTML> <HTML> <HEAD> <TITLE><?= TITLE ?></TITLE> </HEAD> <BODY> <?= $body ?> <P><A HREF="<?= REDIRECT ?>?logout">Logout</A></P> </BODY> </HTML>

No olvides -

  1. Obtener el ID del cliente web y el secreto en la consola de Facebook
  2. Autorice https://example.com/myapp/ en el mismo lugar