我正在尝试使用Facebook SDK创建Facebook登录自定义按钮。我已成功创建并能够通过单击“继续使用Facebook”按钮成功登录。但问题是每当我点击继续Facebook按钮后重定向到会员页面并尝试点击会员页面上的“注销”按钮来杀死自定义按钮创建的会话。它将我重定向到sigin页面。但在几秒钟内它再次将我重定向到成员页面。所以问题出在这里:我一次又一次地重定向到成员页面而无法注销。但是,如果我尝试使用提供的用户名和密码登录没有facebook。我可以毫无问题地登录和注销。上面我给出了代码的链接。
connect.js(包含facebook登录和验证码。)
function getUserDetails() {
FB.api('/me?fields=id,name,email,birthday,gender,first_name,last_name,verified,hometown', function(response) {
var data = {
access_token: FB.getAccessToken(),
fb_id: response.id,
email: response.email,
name: response.name,
first_name: response.first_name,
last_name: response.last_name,
birthday:response.birthday,
verified: response.verified,
hometown:response.hometown.name,
gender: response.gender
};
$.ajax({
url:'connect.php',
type: 'POST',
dataType: 'JSON',
data: {user:data}
});
});
}
function statusChangeCallback(response)
{
if (response.status === 'connected') {
$("div.fb-login").hide();
getUserDetails();
} else {
$.ajax({
url:'connect.php',
type: 'POST',
dataType: 'JSON',
data: {
action: 'logout.php'
}
});
}
}
function checkLoginState() {
FB.getLoginStatus(function(response)
{
statusChangeCallback(response);
});
}
FB.login(function(response){
checkLoginState();
},{scope: 'public_profile,email,user_about_me,user_birthday,user_hometown'});
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxx',
cookie : true,
xfbml : false,
version : 'v2.6',
status : true, // check login status
oauth : true // enable OAuth 2.0
});
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if(d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
Connect.php(通过connect.js发送的数据在这里,通过某些方法,它存储在数据库中,用于创建会话变量。)
logout.php :(每当用户点击memberpage.php上给出的注销按钮时,它会将用户重定向到此页面,然后在销毁会话后将用户重定向到sigin页面。)
$session_destroy();
signin.php:
<script src="connect.js"></script>
<button onclick="FB.login()">Continue With Facebook</button>
答案 0 :(得分:0)
我得到了解决方案。
这是一个&#34; FB.init&#34;在加载或刷新页面时自动调用的函数。它有一个功能&#34; FB.getLoginStatus&#34;因为它一次又一次地调用而且正在创建新会话,因此假装要销毁会话。在登录页面检查会话变量和获取会话变量值的基础上,甚至在使用logouy破坏会话后,使登录页面重定向到成员页面。 但是现在我从FB.init中删除了FB.getLoginStatus函数,现在网站工作正常。