ユーザーを自分のサイトにスムーズにログインさせ、Facebookから詳細を取得することはできますが、ログアウトすることはできません。ロギング時に、ユーザーをメンバーの内部ページに誘導します。そこから、彼は私のWebサイトからのログアウトを押します。それを押すと、彼はフロントページに戻され、もちろんリロードされます。
ログインしているユーザーがログアウトボタンを押すと、フロントページにリダイレクトされるのはどういうことかと思います。しかし、自動的にログインイベントが発生し、彼は再びログインします。
私は次のコードを使用しています。
<script type="text/javascript">
$(function(){
var button;
if(document.cookie.indexOf("fbsr_myappid") > 0){// I am checking if the cookie value is set I am making status in FB.init() false.
var fb_status = false;
}
else{
var fb_status = true;
}
window.fbAsyncInit = function(){
FB.init({ appId : 'myappid',
status : fb_status,
cookie : true,
xfbml : true,
oauth : true
});
showLoader(true);
function updateButton(response) {
button = document.getElementById('fb-auth');
if(response.authResponse) {
FB.api('/me', function(info){
$.post("/web/register/faceBookRegistration",{data:info}).done(function(data){
if(typeof(data) != undefined){
window.location = "/web/login/loadFaceLogin"; // I am doing an ajax post to my login controller having loadFaceMember function.
}
});
login(response, info);
});
button.onclick = function(){
// I think I should use the folowing code somewhere else
FB.logout(function(response){
logout(response);
});
};
} else {
button.onclick = function(){
showLoader(true);
FB.login(function(response){
if(response.authResponse) {
FB.api('/me', function(info){
login(response, info);
});
} else {
showLoader(false);
}
}, {scope:'email, user_birthday,user_about_me' });
}
}
}
FB.getLoginStatus(updateButton);
FB.Event.subscribe('auth.statusChange', updateButton);
};
(function() {
var e = document.createElement('script');
e.async = true;
e.type = 'text/javascript';
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
function login(response, info){
if (response.authResponse) {
var accessToken = response.authResponse.accessToken;
showLoader(false);
}
}
function logout(response){
FB.logout(function(response){
console.log("User is now logged out.");
});
showLoader(false);
}
function showLoader(status){
if (status)
console.log("Yes showLoader.");
else
console.log("Yes dont showLoader.");
}
});
サーバー側では、ログアウトボタンを押すと、次の関数がログアウトコントローラーで呼び出されます。
function index(){
$isSessionExp = true;
if( $this->session->userdata('is_sess') )
$isSessionExp=false;
$login_session_id = $this->session->userdata('login_session_id');
$this->login_model->updateLogoutTime($login_session_id);
$this->session->sess_destroy();
if($isSessionExp)
redirect($this->url."/logout/session_expired");
else
redirect($this->url."/login");
}
ログアウトコントローラーの上記の関数を次のjavascriptコードの行にリンクできるかどうかを推測します。
FB.logout(function(response){
logout(response);
}
私の仕事は終わります。
どんな助けでも大歓迎です。