2012-01-28 9 views
6

Estoy desarrollando una aplicación de Facebook. Tengo un flujo OAuth del lado del servidor que me permite autenticar a un usuario sin que haga clic en ningún botón. Por lo tanto, recupero su accessToken siempre y cuando utilice otra información en el lado del servidor antes de generar la página.Establecer JavaScript API accessToken

En mi aplicación, ahora necesito utilizar la API de Javascript que técnicamente podría compartir el mismo token Ocnh.

¿Es posible crear una instancia del objeto FB javascript con un token Oauth dado?

Sé que es posible hacer el sentido contrario al hacer el proceso Oauth en el lado del cliente y compartir la clave Oauth con el servidor a través de la cookie, pero esto tiene dos inconvenientes en mi opinión: _ Primero, implica tener este botón de "inicio de sesión" que para mí no es una buena experiencia de usuario para una aplicación de Facebook. _ Además, no entiendo cómo se supone que se debe comportar este proceso de Oauth si mi aplicación está compuesta de dos páginas diferentes. Pasar de una página a otra recarga completamente el javascript. ¿Se realizará este proceso de Oauth (con la ventana emergente, etc.) en cada página recargándose?

Gracias por su ayuda!

Respuesta

9

que tenía un problema similar una vez, Facebook tiene un método más antiguo llamado FB.getLoginStatus que se puede utilizar para comprobar si el usuario ha dado permiso y sin una ventana emergente -

FB.init({appId: 'XXXXXXXXXXXXXX', xfbml: true, cookie: true, oauth: true}); 
FB.getLoginStatus(function(response) { 

    if (response.authResponse) { 
    token = response.authResponse.accessToken; 
    FB.api('/me', function(response) { 
     console.log(response); 
     // do something here they are logged in and have given you perms 
    }); 
    } else { 
    // no user session available, someone you dont know 
    } 
}); 

espero que ayude!

+0

Funcionó simplemente genial! FYI, parece que no necesitamos configurar el token como una variable global. ¡Muchas gracias por tu ayuda! –

+0

¡increíble! me alegro de poder guiarte en la dirección correcta. :) –

+0

¡Gracias una tonelada! Tenía el mismo problema y esto lo resolvió en unos segundos! Me salvaste HORAS de trabajo. –

Cuestiones relacionadas