El problema sucede cuando se ha perdido la cookie de Facebook, por que el sistema pedirá iniciar sesión nuevamente (y esta vez no pedirá los permisos) y redireccionará nuevamente al script para de esa forma publicar el muro.
¡Y aquí aparece el problema! El script queda bloqueado (en la api cuando hace el pedido de post). No se si sea el CURL o que, pero es la API la que falla. Si el usuario tiene la sesión iniciada el sistema postea sin dramas. EL PROBLEMA ESTÁ CUANDO EL USUARIO INICIA SESION Y SOBRE LA MISMA SE POSTEA EN SU MURO.
Este es el script (simplificado) para postear en el muro de un usuario:
Código PHP:
include 'facebook.php';
$config['appId' ] = '20717xxxxxxx651738';
$config['secret'] = '0ba08c261xxxxxxx433df7d3b91fcae85';
$facebook = new Facebook($config);
$loginUrl = $facebook->getLoginUrl(array('scope' => 'publish_stream'));
$user = $facebook->getUser();
if ($user > 0)
{
echo 'Hola Uid '.$user.'. Posteo en tu muro. ';
try {
$publishStream = $facebook->api("/$user/feed", 'post', array(
'message' => 'Probando 1 2 3 '.time()
)
);
echo 'Se ha posteado en tu muro.';
} catch (FacebookApiException $e) {
echo 'Error: '.$e->getMessage();
}
} else {
echo '<a href="'.$loginUrl.'">Inicia sesion</a>';
}
He probado intentar redireccionar a una página que con javascript demora 5 segundos entre login y posteo, pero muchas de las veces, el sistema igualmente queda bloqueado.
El problema en que en el servidor queda hijos de apache tipo zoombie y nunca terminan, a pesar de que he definido un set_time_limit(5);.
Muchas gracias de antemano...