Estoy desarrollando un inicio de sesión con facebook usando javascript.
El caso es el siguiente, cuando inicias sesión con facebook, te cambia el botón y se activa el de Logout, Pero quiero que cuando inicie sesión me rediriga a otro archivo php para poder gestionar los datos del usuario e introducirlos en la Base de Datos.
Los usuarios que se registran normal van a un archivo php donde me introduce los datos en la BD y ese archivo con ajax me redirige dentro de la web.
Quiero hacer lo mismo pero con Facebook.
Os dejo el código Javascript:
<script>
// Constantes de control de estado en Facebook
// https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/
var APP_ID = 'XXXXXXXXXXXXXXXXXXXXXX';
var CHANNEL_URL= 'XXXXXXXXXXXXXXX';
var STATUS_CONNECTED = 'connected';
var STATUS_NOT_AUTHORIZED = 'not_authorized';
var STATUS_UNKNOWN = 'unknown';
var PERMISSIONS = {scope: 'email, user_about_me, user_birthday, publish_stream'};
var uid;
var accessToken;
var isLogginProcess = false;
function writeOutput(msg)
{
var $output = $('.output');
var content = $output.html();
$('.output').html(content + msg + '<br/>');
}
function doLogin (ev)
{
writeOutput('Solicitando login...');
isLogginProcess = true;
FB.login(controlarStatus, PERMISSIONS);
}
function doAuthorize (ev)
{
writeOutput('Solicitando autorización...');
isLogginProcess = true;
FB.login(controlarStatus, PERMISSIONS);
}
function doLogout (ev)
{
writeOutput('Solicitando logout...');
FB.logout(controlarStatus);
}
function authResponseChange (respuesta)
{
writeOutput('Evento AuthResponseChange: '+respuesta.status);
controlarStatus(respuesta);
}
function statusChange (respuesta)
{
writeOutput('Evento StatusChange: '+respuesta.status);
controlarStatus(respuesta);
}
function controlarStatus(respuesta)
{
if (respuesta.authResponse)
{
writeOutput('Control status (con respuesta): '+respuesta.status);
if (respuesta.status === STATUS_CONNECTED)
{
/*
El usuario está logueado y además ha sido autenticado por
la aplicación. En este caso, respuesta.authResponse contiene el ID
del usuario, un token de acceso válido, una petición firmada y el momento
en que el token de acceso y la petición firmada caducarán
*/
// Podriamos guardar datos como el userID y el token de acceso
uid = respuesta.authResponse.userID;
accessToken = respuesta.authResponse.accessToken;
$('#logout').show();
$('#authorize').hide();
$('#login_facebook').hide();
}
else if (respuesta.status === STATUS_NOT_AUTHORIZED)
{
/*
El usuario está logueado en Facebook, pero no ha sido autenticado
por la aplicación. Se debería permitir mediante un botón o enlace (si se
hace de forma automática, el cuadro de diálogo puede ser interpretado como
un popup a bloquear).
*/
$('#authorize').show();
$('#logout').show();
$('#login_facebook').hide();
}
else
{
// El usuario no está logueado en Facebook
$('#login_facebook').show();
$('#authorize').hide();
$('#logout').hide();
}
}
else
{
writeOutput('Control Status (sin respuesta): '+respuesta.status);
if (isLogginProcess)
{
// Si el usuario viene de un proceso de login, es posible que
// haya dado a cancelar en la ventana, por lo que internamente
// solicitamos un nuevo control de estado del usuario
// El parámetro true es fundamental para que la petición no se
// cachee, y por tanto obtengamos el estado real
isLogginProcess = false;
FB.getLoginStatus(controlarStatus, true);
}
if (respuesta.status === STATUS_NOT_AUTHORIZED)
{
$('#authorize').show();
$('#login_facebook').hide();
$('#logout').hide();
}
else
{
$('#login_facebook').show();
$('#authorize').hide();
$('#logout').hide();
}
}
writeOutput('----------------------------------');
}
function init()
{
// FB.Event.subscribe('auth.login', controlarStatus);
// FB.Event.subscribe('auth.statusChange', statusChange);
FB.Event.subscribe('auth.authResponseChange', authResponseChange);
FB.getLoginStatus(controlarStatus, true);
$('#login_facebook').on('click', doLogin);
$('#authorize').on('click', doAuthorize);
$('#logout').on('click', doLogout);
}
/*
** Versión de uso convencional
** que no dependiera de jQuery
*/
window.fbAsyncInit = function() {
// Inicialización del SDK JavaScript para Facebook
FB.init({
appId : APP_ID, // App ID para conexión con Facebook
channelUrl: CHANNEL_URL, // Ruta al fichero channel para cross-domain
status : false, // Comprobar el estado de login de inicio
xfbml : true // true para compatibilidad con social plugins
});
// Aquí, ya podemos inicializar nuestros procesos
init();
};
// Carga del SDK de forma asíncrona
(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/es_ES/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk')); // */
</script>