因此,我正在使用这样的函数来获取当前在我的网站上已通过身份验证的用户的访问 token :
var token;
FB.getLoginStatus(
function(response){
if (response.session) {
alert(response.session.access_token);
//This correctly shows the access token. <-----GOOD
token = response.session.access_token;
}
else{
//Other stuff.
}
}
);
alert(token);
//This shows undefined. <------PROBLEM
了解访问 token 的唯一方法似乎是在对 FB.getLoginStatus 的调用中调用的匿名函数中。
我确定问题在于 FB.getLoginStatus 内部的匿名函数直到页面上所有其他脚本结束后才执行。因此,变量“token”在一切执行完毕之前不会被设置,从而使其无用。
有没有办法将访问 token 提取到通用可访问的变量中?我不想在单个匿名函数中编写需要了解访问 token 的所有代码。
最佳答案
问题是 getLoginStatus 是连接到 FB api 的异步调用。但与此同时,您的脚本继续运行,因此警报( token );在 getLoginStatus() 完成之前被调用。所以 token 尚未设置。
我不知道您到底想用 token 做什么,但我的方法是在加载 token 后立即调用 getLoginStatus() 内的函数,然后继续执行该功能你要。所以...
var token;
FB.getLoginStatus(
function(response){
if (response.session) {
alert(response.session.access_token);
//This correctly shows the access token. <-----GOOD
token = response.session.access_token;
continueScript();
}
else{
//Other stuff.
}
}
);
function continueScript() {
....
doSomeMoreFunctionalitiesWithToken();
....
}
function doSomeMoreFunctionalitiesWithToken() {
alert(token);
}
例如,您可以在屏幕上显示“正在加载...”指示器,然后仅在 getLoginStatus() 完成其任务之后删除并显示实际内容,因此之后 token 已设置。
希望这对您有帮助。
关于javascript - 在函数外部获取 Facebook 访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589543/