2011-01-21 22 views
52

Necesito obtener el token de acceso del método FB.login en Javascript SDK. Mi código de acceso esCómo obtener el token de acceso desde el método FB.login en javascript SDK

FB.login(function(response) { 
    if (response.session) { 
     if (response.perms) { 

     } else { 
      // user is logged in, but did not grant any permissions 
      alert("No Permission.."); 
     } 
    } else { 
     // user is not logged in 
     alert("Please login to facebook"); 
    } 
}, {perms:'read_stream,publish_stream,offline_access'}); 

¿Hay alguna forma de obtener el token de acceso? Puedo obtener el token de acceso usando PHP.

Gracias de antemano ....

Respuesta

113

Usted puede obtener token de acceso usando FB.getAuthResponse()['accessToken']:

FB.login(function(response) { 
    if (response.authResponse) { 
    var access_token = FB.getAuthResponse()['accessToken']; 
    console.log('Access Token = '+ access_token); 
    FB.api('/me', function(response) { 
    console.log('Good to see you, ' + response.name + '.'); 
    }); 
    } else { 
    console.log('User cancelled login or did not fully authorize.'); 
    } 
}, {scope: ''}); 

Editar: Actualizado a usar OAuth 2.0, se requiere desde diciembre de 2011. Ahora utiliza FB.getAuthResponse(); Si está utilizando un navegador que no tiene una consola, (estoy hablando de usted, Internet Explorer) asegúrese de comentar las líneas console.log o utilice un script de verificación de errores como:

if (typeof(console) == "undefined") { console = {}; } 
if (typeof(console.log) == "undefined") { console.log = function() { return 0; } } 
+34

Ha habido un cambio en la API de Facebook que podría romper el código. Si usa Oauth 2.0, ahora el token de acceso es 'response.authResponse.accessToken'. –

+4

Sí, también no debe usar" if (response.session) "debe reemplazarse con" if (response.authResponse) "(línea # 2) – Alex

+0

No funciona @PlasticSturgeon – Chintan

12

response.session.access_token no funciona en mi código. Pero esto funciona: response.authResponse.accessToken

 FB.login(function(response) { alert(response.authResponse.accessToken); 
    }, {perms:'read_stream,publish_stream,offline_access'}); 
+0

permanentes debe ser alcance –

2

response.session ya no funciona porque response.authResponse es la nueva manera de acceder al contenido de la respuesta después de la migración oauth.
Marque esta para más detalles: SDKs & Tools › JavaScript SDK › FB.login

3

Si ya está conectado, sólo tiene que escribir esto en la consola de javascript:

FB.getAuthResponse()['accessToken'] 
0

window.fbAsyncInit = function() { 
 
    FB.init({ 
 
     appId: 'Your-appId', 
 
     cookie: false, // enable cookies to allow the server to access 
 
     // the session 
 
     xfbml: true, // parse social plugins on this page 
 
     version: 'v2.0' // use version 2.0 
 
    }); 
 
}; 
 

 
// Load the SDK asynchronously 
 
(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/en_US/sdk.js"; 
 
    fjs.parentNode.insertBefore(js, fjs); 
 
}(document, 'script', 'facebook-jssdk')); 
 

 
    
 
function fb_login() { 
 
    FB.login(function (response) { 
 

 
     if (response.authResponse) { 
 
      console.log('Welcome! Fetching your information.... '); 
 
      //console.log(response); // dump complete info 
 
      access_token = response.authResponse.accessToken; //get access token 
 
      user_id = response.authResponse.userID; //get FB UID 
 

 
      FB.api('/me', function (response) { 
 
       var email = response.email; 
 
       var name = response.name; 
 
       window.location = 'http://localhost:12962/Account/FacebookLogin/' + email + '/' + name; 
 
       // used in my mvc3 controller for //AuthenticationFormsAuthentication.SetAuthCookie(email, true);   
 
      }); 
 

 
     } else { 
 
      //user hit cancel button 
 
      console.log('User cancelled login or did not fully authorize.'); 
 

 
     } 
 
    }, { 
 
     scope: 'email' 
 
    }); 
 
}
<!-- custom image --> 
 
<a href="#" onclick="fb_login();"><img src="/Public/assets/images/facebook/facebook_connect_button.png" /></a> 
 

 
<!-- Facebook button --> 
 
<fb:login-button scope="public_profile,email" onlogin="fb_login();"> 
 
       </fb:login-button>

0

window.fbAsyncInit = function() { 
 
    FB.init({ 
 
     appId: 'Your-appId', 
 
     cookie: false, // enable cookies to allow the server to access 
 
     // the session 
 
     xfbml: true, // parse social plugins on this page 
 
     version: 'v2.0' // use version 2.0 
 
    }); 
 
}; 
 

 
// Load the SDK asynchronously 
 
(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/en_US/sdk.js"; 
 
    fjs.parentNode.insertBefore(js, fjs); 
 
}(document, 'script', 'facebook-jssdk')); 
 

 
    
 
function fb_login() { 
 
    FB.login(function (response) { 
 

 
     if (response.authResponse) { 
 
      console.log('Welcome! Fetching your information.... '); 
 
      //console.log(response); // dump complete info 
 
      access_token = response.authResponse.accessToken; //get access token 
 
      user_id = response.authResponse.userID; //get FB UID 
 

 
      FB.api('/me', function (response) { 
 
       var email = response.email; 
 
       var name = response.name; 
 
       window.location = 'http://localhost:12962/Account/FacebookLogin/' + email + '/' + name; 
 
       // used in my mvc3 controller for //AuthenticationFormsAuthentication.SetAuthCookie(email, true);   
 
      }); 
 

 
     } else { 
 
      //user hit cancel button 
 
      console.log('User cancelled login or did not fully authorize.'); 
 

 
     } 
 
    }, { 
 
     scope: 'email' 
 
    }); 
 
}
<!-- custom image --> 
 
<a href="#" onclick="fb_login();"><img src="/Public/assets/images/facebook/facebook_connect_button.png" /></a> 
 

 
<!-- Facebook button --> 
 
<fb:login-button scope="public_profile,email" onlogin="fb_login();"> 
 
       </fb:login-button>

Cuestiones relacionadas