我正在使用 Facebook API 登錄用戶。它成功登錄用戶。
但是每當我重繪 網站或關閉它然后重新打開它會自動注銷。我不需要用戶登錄,直到他自己退出我的網站。我該怎么做?
這是我的代碼:
function statusChangeCallback(response) {
if (response.status === 'connected') {
setElements(true);
console.log('Logged in');
instaInfo();
} else {
setElements(false);
console.log('not logged in');
}
}
function checkLoginState() {
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}
function setElements(isLoggedIn) {
if (isLoggedIn) {
document.querySelector('#fb-btn').style.display = 'none';
document.querySelector('.logout').style.display = 'block';
document.querySelector('.navigation').style.display = 'block';
document.querySelector('.nav-main').style.visibility = 'visible';
document.querySelector('#container').style.display = 'block';
} else {
document.querySelector('#fb-btn').style.display = 'block';
document.querySelector('.logout').style.display = 'none';
document.querySelector('.navigation').style.display = 'none';
document.querySelector('.nav-main').style.visibility = 'hidden';
document.querySelector('#container').style.display = 'none';
}
}
document.querySelector('.logout').addEventListener('click', () => {
FB.logout(function() {
setElements(false);
console.log('Logged Out!');
});
});
uj5u.com熱心網友回復:
根據臉書檔案:
雖然您可以隨時呼叫 FB.getLoginStatus(例如,當用戶嘗試進行社交操作時),但大多數社交應用都需要在頁面加載后盡快了解用戶的狀態。在這種情況下,不是顯式呼叫 FB.getLoginStatus,而是可以通過在呼叫 FB.init 時設定 status: true 來檢查用戶的狀態。
要接收此呼叫的回應,您必須訂閱 auth.statusChange 事件。此事件傳遞的回應物件與通過顯式呼叫 FB.getLoginStatus 回傳的回應物件相同。
https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/
可能只是您在代碼示例中遇到了 javascript 異步性質的問題。您是否檢查過對 getLoginStatus 的呼叫實際回傳了什么?
uj5u.com熱心網友回復:
您可以利用瀏覽器的 localStorage(它是window物件的一種方法)來保留資料,即使在重新加載頁面或關閉視窗之后也是如此。
看看這里:https : //developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357637.html
