Problema de autorización de Facebook

votos
3

Estoy trabajando en una aplicación de Facebook y hay algo que no entiendo sobre cómo funciona su sistema de autorización.

Nuestra configuración básica es esta

canvas URL = dominio.com/facebook

Esta es una página simple con un elemento FBML Iframe que apunta a domain.com/facebook/app que es una página HTML que sirve una aplicación Flash.

La aplicación Flash solicita datos adicionales de nuestro servidor de aplicaciones; algunas de esas solicitudes solicitan datos de Facebook (como una lista de ID de amigos).

Entonces Flash hace una solicitud a domain.com/resources/facebook/friends: esta es una página PHP que crea una instancia de Facebook (su biblioteca PHP) y realiza la llamada necesaria a su API y devuelve los datos.

Sin embargo, la solicitud a esta URL (por flash) no se valida, por lo que luego se redirige a su inicio de sesión cuando, a continuación, redirecciona la URL de mi lienzo con dos parámetros: auth_token y siguiente . Entonces la solicitud es válida, pero el redireccionamiento rompe la llamada flash.

Por lo tanto, estoy tratando de averiguar cómo hacer que estas otras llamadas a la API (cuando son llamadas a la API de mace facebook) se actualicen en Facebook desde el principio.

Publicado el 27/01/2009 a las 19:14
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
1

Ok, lo descubrí.

Resultó que Flash ya sigue los redireccionamientos, todo lo que necesitaba hacer era detectar (en el lienzo URL) cuando había una solicitud de autorización (notada por la presencia de auth_token y siguiente ) e incluir auth_token como un parámetro GET cuando redirigido a la siguiente URL (básicamente, reenviar el auth_token a la solicitud original).

Entonces, contrariamente a lo que dije antes, la redirección NO rompió la llamada flash, simplemente no tenía suficientes datos para ser una solicitud válida.

Respondida el 27/01/2009 a las 21:55
fuente por usuario

votos
1

Resolver poniendo el código de abajo en lugar de la "require_login ()" línea

if (isset($_GET['auth_token'])) {
 $sess_data=$facebook->api_client->call_method('auth.getSession',array('auth_token'=>$_GET['auth_token']));
 $facebook->set_user($sess_data['uid'],$sess_data['session_key'],$sess_data['expires']);
 $user=$sess_data['uid'];
}
if (!$sess_data) {
 $user=$facebook->require_login();
}
Respondida el 24/01/2010 a las 21:01
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more