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();
$facebook
是 Facebook
类的实例。根据您的 cmets,如果您还想从 facebook 注销,那么您需要在注销功能时销毁会话,例如
$facebook->destroySession();
【讨论】:
感谢您的回复,但您能告诉我如何从网站注销中完全注销 Facebook。在我的情况下,它只是从网站而不是从 facebook 注销.. 是的,我使用的和你说的一样,但它不起作用。我的 logout.php 代码是这样的<?php require 'src/facebook.php'; //including the facebook php sdk $facebook = new Facebook(); $token = $facebook->getAccessToken(); $url = 'index.html'; $facebook->destroySession(); session_destroy(); header('Location: '.$url); ?>
以上是关于facebook登录和从网站注销?的主要内容,如果未能解决你的问题,请参考以下文章
Facebook API - javascript sdk:注销后状态显示“已连接”