如何在Onedrive中找到access_token是否已过期?

时间:2015-04-23 08:39:51

标签: api access-token onedrive

在Onedrive中,我可以使用他们的Live SDK API并获取Access_token,我的用户的文件选择器也能正常工作。

但是,每次用户尝试附加文件时,我都会调用API来获取Access_token。

这是一个问题,当每次尝试附加文件时有更多用户尝试调用此API(Microsoft对API调用的数量有限制)。

另外,如果我尝试使用WL.offline_access范围对Access_token使用Refresh_token,我的应用程序将如何知道Access_token已过期?

1 个答案:

答案 0 :(得分:2)

您需要在代码中添加逻辑,以查看用户是否已在进行会话。您可以通过添加WL.Event.subscribe并检查“auth.statusChange”来完成此操作。如果用户状态在任何时候都发生了变化,它将通过调用WL.getLoginStatus来调用该函数来检查用户的当前状态(即connect,notConnected和unknown)。如果要在那里使用任何值,WL.getLoginStatus还将返回用户会话对象(access_token,expires_in等)。

您的代码看起来像这样。

< script type = "text/javascript" >

  WL.Event.subscribe("auth.statusChange", chkStatus);

function chkStatus() {

    WL.getLoginStatus(
      function(response) {
        if (response.status == "connected") {

          document.getElementById("info").innerText = "You're signed in";
        } else {
          WL.login({
            "scope": "wl.skydrive_update"
          });
        }
    

有关WL.getLoginStatus的更多信息,请访问https://msdn.microsoft.com/EN-US/library/hh550842.aspx。我希望有所帮助。