如何注销用户使用Facebook的SDK?(How to log out user using fa

2019-06-26 07:33发布

我使用的是facebook登录使用我的网站facebook php sdk

我注意到的是logout链接没有做任何事情。 我退出后,用户仍然可以浏览该网站。 这里是我的代码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>"
?>

这个code工作在登录罚款。该注销链接应该销毁了会议。 这里是页的标题:

<?php 
    print_r($_SESSION) ; 
    header('example.com') ; 
?>

我的问题logout.php页面是完全不检测了会议。 我不知道这是否是一个facebook api的问题还是我php的问题。

你如何注销用户使用Facebook SDK?

Answer 1:

您可以通过提供您的网站网址下一参数和销毁会话从您的网站,以及来自Facebook如下注销

$token = $facebook->getAccessToken();
$url = 'https://www.facebook.com/logout.php?next=' . YOUR_SITE_URL .
  '&access_token='.$token;
session_destroy();
header('Location: '.$url);

您还可以登录他们走出你的网站,你必须避免你的网站从自动记住你的用户并重新登录他们马上。

禁用代码,自动记录你的用户,并尝试再次注销。 销毁会话不会阻止您的网站的用户记忆创建一个全新有效的会话。



Answer 2:

这里是我的网站,使用户登录和退出与Facebook的PHP代码注销。 你不必破坏会话注销用户,你在技术上需要做的就是信号到自己的网站,这个特殊的会议可能不会被用来让用户。

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

然后,在每一个php文件要防止没有登录的用户访问,把这个顶部:

<?php
    require("log2.php");
?>

有了这个代码,用户将自动登录,如果他们调用注销代码,该网站不会让他们,直到他们重新登录。



Answer 3:

从Facebook注销的用户可能很困难。 这对我的作品

// 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 );


Answer 4:

你需要调用session_start()在哪里会话将被用于所有页面。

要登录有人在会话(即清除它),你可以使用session_destroy()

最后, header('example.com'); 实际上不会做任何事情,你打算进行重定向? 如果是这样,你应该使用'标题(“位置: http://example.com/ ”);

编辑:对不起,我没有正确读取这个,什么是第二代码片段? 那是你logout.php页?

据我所知与Facebook的API,当你调用getLogoutUrl()这是你应该把你的用户,当他们点击链接,而不是你自己的logout.php



Answer 5:

回答

  $_SESSION['fb_(your_APP_ID)_access_token'] = '' ;

当登录会话初始化,看来,如果我们设置这些的session变量设置为null它打破了日志功能,并要求用户重新登录



文章来源: How to log out user using facebook SDK?