box-java-sdk-v2 Web服务器方案中的OAuth令牌

时间:2014-08-25 20:55:14

标签: box-api boxapiv2

我在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();
}

"代码"用于创建" BoxOAuthToken"

这很好用!

我的问题: "代码"必须为每个请求生成。这涉及启动浏览器并让用户对Box进行身份验证。但是如果我想在Web服务器上运行并公开Web服务呢?我希望用户通过浏览器进行身份验证,然后让Web服务器调用

BoxFolder boxFolder= client.getFoldersManager().getFolder("0",null);
ArrayList<BoxTypedObject> folderEntries = boxFolder.getItemCollection().getEntries();

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

关于如何实现这一目标的任何想法?

目前,我的Web服务器使用Apache Commons HTTP直接调用API(例如api.box.com/2.0/folders/0),并使用&#34; Authorization&#34;标题和那个工作。但我想知道我是否可以使用SDK。

1 个答案:

答案 0 :(得分:0)

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

您只需将代码更改为以下内容:

1)使用您正在做的任何事情来获取授权令牌。此过程还应该为您提供刷新令牌 2)使用clientid,客户端密钥,授权和刷新设置BoxClient 3)按照你的意思拨打电话。

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