2012-03-12 12 views
0

functionでトークンを取得するにはどうすればよいですか?私はこの関数からAjax処理のために送りたい。javascript関数から値を取得する

<body> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
    var token; 
    window.fbAsyncInit = function() { 
     FB.init({ appId: 'XXXXXXXX',status: true,cookie: true,xfbml: true,oauth: true}); 
     FB.getLoginStatus(function(response) { 
      if (response.authResponse){ 
         if(response.status=="connected") { 
           token = response.authResponse.accessToken; 
         } 
      } 
     }); 
    }; 
    alert(token);//undefined 
</script> 
<div id="fb-root"></div> 
</body> 
+0

fbAsyncInit' 'から何かを取得する必要はありませんので、' token'がfbAsyncInit' '外で定義されて、あなたのような呼び出したい関数を呼び出しています。 'token'が' fbAsyncInit'によって変更されたときにアクションを起こしたいと思っていますか? –

答えて

4

あなたの警報が実行された時点で終了することはできません非同期要求を実行している:あなたはすでに設定されているためにトークンを必要とする他の機能を実行する必要がある場合は、ラインから呼び出します。あなたの問題を解決するには、非同期メソッドが完了したときに、単に関数を呼び出す:

var token; 
window.fbAsyncInit = function() { 
    FB.init({ appId: 'XXXXXXXX',status: true,cookie: true,xfbml: true,oauth: true}); 
    FB.getLoginStatus(function(response) { 
     if (response.authResponse){ 
        if(response.status=="connected") { 
          token = response.authResponse.accessToken; 
          asyncComplete(); 
        } 
     } 
    }); 
}; 

function asyncComplete() { 
    alert(token); 
} 

それとも、単にtoken変数使用しての代わりに値を渡す:

window.fbAsyncInit = function() { 
    FB.init({ appId: 'XXXXXXXX',status: true,cookie: true,xfbml: true,oauth: true}); 
    FB.getLoginStatus(function(response) { 
     if (response.authResponse){ 
        if(response.status=="connected") { 
          asyncComplete(response.authResponse.accessToken); 
        } 
     } 
    }); 
}; 

function asyncComplete(token) { 
    alert(token); 
} 
0

トークンを初期化していないため、初期化しようとしたときにはifブロックで行いました。あなたのifステートメントの1つがifチェックに失敗しています。

+0

どのように初期化する、私はそれを得ることができるように? –

+0

'if'条件に問題があるかもしれませんが、' if'が正しかったとしても、要求は非同期であるように見えるので、現在の 'alert()'配置では未定義です。 –

0

token変数は、要求が検証のためのFacebookに送信され、応答が返送されたら、そうでのみ使用できます、非同期的に割り当てられている

if(response.status=="connected") { 
    token = response.authResponse.accessToken; 
    YourFunction(token); 
} 
0

...このAJAX呼び出しが完了したときに、あなたの関数を呼び出します。

token = response.authResponse.accessToken; 
doSomeOtherFunction(token); 
3

それは、非同期呼び出しですur関数が呼び出され、次のalert文を実行する前にスクリプトがそれを返すのを待たずにトークン値を 'undefined'にすることを意味します。あなたは何ができるか

var token; 
    window.fbAsyncInit = function() { 
     FB.init({ appId: 'XXXXXXXX',status: true,cookie: true,xfbml: true,oauth: true}); 
     FB.getLoginStatus(function(response) { 
      if (response.authResponse){ 
         if(response.status=="connected") { 
           token = response.authResponse.accessToken; 
           alert(token);//should give correct value here 
           newFunction(token); 
         } 
      } 
     }); 
    }; 
関連する問題