Web服务器场景中的box-java-sdk-v2 OAuth令牌



我在https://github.com/box/box-java-sdk-v2查看Box的Java SDK

我看到了一个示例片段

String url = "https://www.box.com/api/oauth2/authorize?response_type=code&client_id=" +    key + "&redirect_uri=http%3A//localhost%3A" + PORT;
try {
        Desktop.getDesktop().browse(java.net.URI.create(url));
        code = getCode();
        System.out.println("code: " + code);
    } catch (IOException e) {
        e.printStackTrace();
}

"code"用于创建"BoxOAuthToken"

这个工作很好!

我的问题是:必须为每个请求生成"代码"。这涉及到启动浏览器并让用户对Box进行身份验证。但是,如果我想在Web服务器上运行它并公开Web服务,该怎么办呢?我想让用户从浏览器进行身份验证,并让Web服务器调用
BoxFolder boxFolder= client.getFoldersManager().getFolder("0",null);
ArrayList<BoxTypedObject> folderEntries = boxFolder.getItemCollection().getEntries();

并让它将结果作为JSON返回给客户端/用户。

对如何实现这一点有什么想法吗?

现在,我的web服务器直接调用api(例如。api.box.com/2.0/folders/0)使用Apache Commons HTTP并传递带有"Authorization"头的令牌,这是工作的。但我想知道我是否可以使用SDK。

您不需要为每个请求执行OAuth握手。getCode函数绑定到一个套接字以获得Box的返回调用,Box模拟传统的握手。

您可以简单地将代码修改如下:

1)使用您正在做的任何操作来获得授权令牌。此过程还应该为您提供一个刷新令牌
2)设置您的BoxClient与客户端,客户端秘密,授权和刷新。
如你所见,拨打电话。

注意事项:
1)访问令牌的有效期为60分钟。在此之后,您需要使用刷新令牌来生成新的访问令牌。刷新令牌的有效期为60天。当您获得一个新的访问令牌时,您将获得一个新的刷新令牌。

最新更新