Estoy usando la API de Facebook para iniciar sesión como usuario. Inicia sesión en un usuario con éxito.
Pero cada vez que actualizo el sitio web o lo cierro y luego lo vuelvo a abrir, se cierra la sesión automáticamente. No necesito que quiero que un usuario inicie sesión hasta que él mismo cierre sesión en mi sitio web. ¿Cómo lo hago?
Este es mi código:
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!'); }); });Según la documentación de Facebook:
Si bien puede llamar a FB.getLoginStatus en cualquier momento (por ejemplo, cuando el usuario intenta realizar una acción social), la mayoría de las aplicaciones sociales necesitan conocer el estado del usuario lo antes posible después de que se carga la página. En este caso, en lugar de llamar explícitamente a FB.getLoginStatus, es posible verificar el estado del usuario configurando status: true cuando llama a FB.init.
Para recibir la respuesta de esta llamada, debe suscribirse al evento auth.statusChange. El objeto de respuesta que pasa este evento es idéntico al que se devolvería llamando explícitamente a FB.getLoginStatus.
https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/
Es posible que se encuentre con un problema con la naturaleza asíncrona de javascript en su ejemplo de código. ¿Ha verificado lo que realmente devuelve su llamada en getLoginStatus?
Puede aprovechar el almacenamiento local del navegador (es un método del objeto de la ventana ) para conservar los datos incluso después de volver a cargar la página o incluso después de cerrar la ventana.
Eche un vistazo aquí: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage