facebook登录和从网站注销?

Posted

技术标签:

【中文标题】facebook登录和从网站注销?【英文标题】:facebook login and logout from a website? 【发布时间】:2014-03-21 09:40:51 【问题描述】:

我正在使用 facebook 帐户信息登录和注销网站。为此,我编写了这样的代码

对于Index.html,我的代码是这样的

<div id="fb-root"></div>
<script type="text/javascript">
//<![CDATA[
window.fbAsyncInit = function() 
   FB.init(
     appId      : 'XXXXXXXXXXXXXXXX', // App ID
     channelURL : '', // Channel File, not required so leave empty
     status     : true, // check login status
     cookie     : true, // enable cookies to allow the server to access the session
     oauth      : true, // enable OAuth 2.0
     xfbml      : false  // parse XFBML
   );
;
// logs the user in the application and facebook
function login()
FB.getLoginStatus(function(r)
     if(r.status === 'connected')
            window.location.href = 'fbconnect.php';
     else
        FB.login(function(response) 
                if(response.authResponse) 
              //if (response.perms)
                    window.location.href = 'fbconnect.php';
             else 
              // user is not logged in
            
     ,scope:'email'); // which data to access from user profile
 
);


// Load the SDK Asynchronously
(function() 
   var e = document.createElement('script'); e.async = true;
   e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
   document.getElementById('fb-root').appendChild(e);
());

//]]>
</script>
<a href='#' onclick='login();'>Facebook Login</a>

在 fbconnect.php 中我的代码如下所示

<?php
    require 'src/facebook.php';
    $facebook = new Facebook(array(
           'appId'  => 'XXXXXXXXXXXXXXXX',
           'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX',
           'cookie' => true,
    ));
    $user = $facebook->getUser();
    $loginUrl = $facebook->getLoginUrl();
    //echo "<a href='$loginUrl'>login</a>";

    $logoutUrl = $facebook->getLogoutUrl();
    //echo $loginUrl; 
    if($user)
        $_SESSION['user_info'] = $user; 
        $_SESSION['user_pro']= $facebook->api('/me');
        echo $_SESSION['user_pro']['first_name'];
        echo $_SESSION['user_pro']['last_name'];
        echo '<pre>';
        //print_r($_SESSION);
        echo '</pre>';
    
    else
        echo 'not logged in '; 
    
    echo "<a href='logout.php'>log out </a>"
?>

因为我还想要注销系统,以便用户也可以从站点注销,所以我为 logout.php 编写了这样的代码

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

但这里显示的错误类似于

Notice: Undefined variable: facebook in logout.php on line 3 Fatal error: Call to a member function getAccessToken() on a non-object in logout.php on line 3.

这里很容易登录,但在注销时却显示错误。那么有人可以告诉我如何解决这个问题吗?我真的是 facebook 应用程序的新手。因此,任何帮助和建议都会非常可观。谢谢

【问题讨论】:

【参考方案1】:

试试看

require 'src/facebook.php';
$facebook = new Facebook();  //including the facebook php sdk
$token = $facebook->getAccessToken();

$facebookFacebook 类的实例。根据您的 cmets,如果您还想从 facebook 注销,那么您需要在注销功能时销毁会话,例如

$facebook->destroySession();

【讨论】:

感谢您的回复,但您能告诉我如何从网站注销中完全注销 Facebook。在我的情况下,它只是从网站而不是从 facebook 注销.. 是的,我使用的和你说的一样,但它不起作用。我的 logout.php 代码是这样的&lt;?php require 'src/facebook.php'; //including the facebook php sdk $facebook = new Facebook(); $token = $facebook-&gt;getAccessToken(); $url = 'index.html'; $facebook-&gt;destroySession(); session_destroy(); header('Location: '.$url); ?&gt;

以上是关于facebook登录和从网站注销?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的网站中从 Facebook 注销

Facebook API - javascript sdk:注销后状态显示“已连接”

Fb.Logout 功能不会注销用户

在用户注销时从我的应用程序中删除 facebook 会话 cookie

使用 Facebook 帐户登录和注销

如何从 facebook 应用程序注销用户,但保持从 facebook 登录