2011-01-21 15 views
52

Javascript SDKのFB.loginメソッドからアクセストークンを取得する必要があります。私のログインコードはjavascript SDKのFB.loginメソッドからアクセストークンを取得する方法

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'}); 

です。アクセストークンを取得する方法はありますか? PHPを使用してアクセストークンを取得できます。

事前に感謝しますが....

答えて

113

あなたは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: ''}); 

編集: はOAuth 2.0のを使用するように更新、2011年12月には今FB.getAuthResponse(); を使用するために必要なコンソールを持たないブラウザを使用している場合は、console.log行をコメントアウトするか、ログフェールセーフスクリプトを使用してください。

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

このコードを破ることができ、FacebookのAPIに変更がありました。 Oauth 2.0を使用している場合、アクセストークンは 'response.authResponse.accessToken'です。 –

+4

「if(response.session)」を使用しないでください。「if(response.authResponse)」と置き換えてください。 #2) – Alex

+0

@PlasticSturgeon – Chintan

12

response.session.access_tokenは私のコードでは機能しません。しかし、これは動作します:response.authResponseはOAuthの移行後の応答内容にアクセスするための新しい方法ですので response.authResponse.accessToken

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

permsは有効範囲にする必要があります –

3

あなたは既にを接続している場合は、単に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>

関連する問題