我正在网站上工作,我希望将facebook登录与我的网站登录系统集成。我已经在代码中集成了facebook-php-sdk。登录功能正常。以下是我发布的要点......
对于2分以上,我使用了以下代码。
require 'src/facebook.php';
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => SECRET_KEY,
));
session_start();
if($_REQUEST['msg'] == 'logout'){
setcookie('fbsr_'.$facebook->getAppId(), '', (time() - 3600), '/', 'domain.com');
$sts = $facebook->destroySession();
session_destroy();
header("Location: index.php");
//echo '<meta http-equiv="refresh" content="2;url=index.php">';
}
$userId = $facebook->getUser();
if ($userId && !isset($_SESSION['fbdata'])) {
$_SESSION['fbdata'] = array("userid" => $userId);
}
<?php if ($userId) {
$userInfo = $facebook->api('/' + $userId); ?>
Welcome <?= $userInfo['name'] ?>
<?php } else { ?>
<div id="fb-root"></div>
<fb:login-button></fb:login-button>
<?php } ?>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId : '<?= YOUR_APP_ID ?>',
status : true,
cookie : true,
xfbml : true,
oauth : true,
});
FB.Event.subscribe('auth.login', function(response) {
//window.location.reload();
});
};
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
<br />
<br />
<a href="<?php echo $_SERVER['PHP_SELF']."?msg=logout"; ?>">Logout</a>
答案 0 :(得分:2)
我在下面的问题中找到了答案。 1.一旦注销并点击登录,facebook登录界面就不会打开。
Facebook Cookie未被删除,或者我们可以说没有从starage中删除。为此我在javascript下面使用了这个
function removeCookie( name, path, domain) { if ( getCookie( name ) ) { document.cookie = name + '=' + ( ( path ) ? ';path=' + path : '') + ( ( domain ) ? ';domain=' + domain : '' ) + ';expires=Thu, 01-Jan-1970 00:00:01 GMT'; } }
它对我有用。
2.一旦注销并刷新页面,登录deatils将再次显示。登录按钮消失。
与上述问题相同的原因。
3.如果上述两点将解决,那么如何通过网站维护登录会话?
在会话中维护fb id,当注销请求删除cookie并销毁会话时。