0

我正在使用 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。那么使用现有访问令牌进行客户端身份验证的推荐方法是什么?

如果回答者可以使用 box 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);
4

2 回答 2

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);
于 2013-07-31T12:09:50.230 回答
0

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

使用现有访问令牌进行客户端身份验证的推荐方法是什么?

您将使用与首次获取访问令牌时相同的身份验证方法。你不需要做任何特别的事情来重用它。如果access_token过期(由过期时间戳比较或 401 响应确定),您可以使用refresh_token来获取新的令牌对。通过以这种方式刷新和持久化令牌对,您可以无限期地保持用户的身份验证。

于 2013-07-11T13:43:28.703 回答