我正在使用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);
答案 0 :(得分:0)
是的,您可以在3600秒内重复使用访问令牌。 Web应用程序的常见模式是将access_token
和refresh_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);