Box Api v2 java - 如何在3600秒内重用访问令牌

时间:2013-07-11 08:35:36

标签: box-api

我正在使用Box Api v2(java)将我的webapp与Box.com集成。

我将用户转发到授权网址

https://www.box.com/api/oauth2/authorize?response_type=code&client_id=client-id

..并在我的重定向终点接收'代码'。使用此代码,我可以获得access_token和refresh_token。我知道access_token仅在1小时内有效。

但是我可以在3600秒内重新使用access_token吗? 例如:用户在30分钟内回来并尝试获取/放置文件

在这种情况下,我需要创建一个新的BoxClient。 那么使用现有访问令牌的客户端身份验证的推荐方法是什么?

如果回答者可以使用java api框粘贴代码片段,那将非常有帮助。

或者是获取新的access_token和refresh_token的刷新,这是唯一可用的方法吗?

BoxClient client = new BoxClient(MY_CLIENT_ID, MY_CLIENT_SECRET);BoxOAuthManager mgr  = client.getOAuthManager();
  // This is refresh
BoxOAuthRequestObject requestObject = BoxOAuthRequestObject.refreshOAuthRequestObject(REFRESH_TOKEN, MY_CLIENT_ID, MY_CLIENT_SECRET);
BoxOAuthToken newToken = mgr.refreshOAuth(requestObject);
client.authenticate(newToken);

2 个答案:

答案 0 :(得分:0)

是的,您可以在3600秒内重复使用访问令牌。 Web应用程序的常见模式是将access_tokenrefresh_token(以及可选的其到期日期时间)存储在与用户关联的数据库记录中。

  
    

使用现有访问令牌建议的客户端身份验证方法是什么?

  

您将使用与首次获取访问令牌时相同的身份验证方法。您无需执行任何特殊操作即可重复使用它。如果access_token已过期(由到期时间戳比较或401响应确定),则可以使用refresh_token获取新的令牌对。通过以这种方式刷新和保留令牌对,您可以无限期地对用户进行身份验证。

答案 1 :(得分:0)

BoxOAuthToken accessToken = new BoxOAuthToken(Map)将在这里工作。

// where Map contains
{
     "exprires_in":"3600",
     "token_type":"bearer",
     "refresh_token":"<refresh_token>",
     "access_token":"<access_token>"
}

Map authMap;
BoxOAuthToken accessToken = new BoxOAuthToken(authMap);
client.authenticate(newToken);