2011-01-21 15 views
52

Ho bisogno di ottenere il token di accesso dal metodo FB.login nell'SDK di Javascript. Il mio codice di accesso èCome ottenere il token di accesso dal metodo FB.login in 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'}); 

C'è un modo per ottenere token di accesso? Sono in grado di ottenere il token di accesso utilizzando PHP.

Grazie in anticipo ....

risposta

113

È possibile ottenere token di accesso utilizzando 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: ''}); 

Edit: aggiornato per utilizzare OAuth 2.0, richiesto dal dicembre 2011. Ora usa FB.getAuthResponse(); Se utilizzi un browser che non dispone di una console, (sto parlando con te, Internet Explorer), assicurati di commentare le righe console.log o utilizza uno script log-failsafe come:

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

C'è stato un cambiamento per l'API di Facebook che potrebbe rompere questo codice. Se usi Oauth 2.0, ora il token di accesso è 'response.authResponse.accessToken'. –

+4

Sì, anche tu non dovresti usare" if (response.session) "dovrebbe essere sostituito con" if (response.authResponse) "(riga # 2) – Alex

+0

Non funziona @PlasticSturgeon – Chintan

12

response.session.access_token non funziona nel mio codice. Ma questo funziona: response.authResponse.accessToken

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

dovrebbero essere scope –

2

response.session non funziona più perché response.authResponse è il nuovo modo per accedere al contenuto della risposta dopo la migrazione OAuth.
Controllare questo per i dettagli: SDKs & Tools › JavaScript SDK › FB.login

3

Se si è già connessi, è sufficiente digitare questo nella console 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>