如何全局存储扩展访问令牌?

时间:2014-09-09 12:35:07

标签: javascript facebook

我希望全局存储extentAT变量以进行进一步的图形API调用。请帮我存储这个变量。这是我的代码示例

FB.login(function(response) {
           if (response.authResponse) 
           {
                var uid = response.authResponse.userID;
                var accessToken = response.authResponse.accessToken;
                alert(accessToken);
                appid="xxxxxxxxxx";
                appsecret="xxxxxxxxxxxxxxxxxxxxxxx";
                var exchangeUrl = "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&fb_exchange_token="+accessToken+"&client_id="+appid+"&client_secret="+appsecret;
                        //got the accesstoken with 1-2 hours expire time
                $.ajax({  
                  type: "GET",
                  url: exchangeUrl,  
                  success: function(data)
                  { 
                     extended = data.split('=');
                     extendedAT = extended['1'].replace('&expires','');
                         alert(extendedAT);
                         // return extendedAT;
                         // $('#AccessToken').val(extendedAT);
                         // $user_session = new Zend_Session_Namespace('fbuser');
                // $user_session->access_token = $paramsfb['access_token'];
                  }

                  });
} else 
            {
             console.log('User cancelled login or did not fully authorize.');
            }
         },{scope: 'email,user_photos,user_videos,offline_access'});

    } 

2 个答案:

答案 0 :(得分:0)

只需将extendedAT变量的声明放在函数之外:

var extendedAT = "";

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

答案 1 :(得分:0)

您可以使用会话来存储值并将其设置为所需的位置。 这是jQuery会话的参考链接。

https://github.com/AlexChittock/JQuery-Session-Plugin

只需在会话中存储价值,如:

$.session.set("extendedAT", extendedAT);

并将其转到您想要再次使用的位置:

$.session.get('extendedAT');

我正在使用它。希望能帮助你。

如果有任何新想法,我也会很高兴。