【问题标题】:box-java-sdk-v2 OAuth token in a Web Server scenarioWeb 服务器场景中的 box-java-sdk-v2 OAuth 令牌
【发布时间】:2014-08-25 20:55:13
【问题描述】:

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

我看到了一个示例 sn-p

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 服务器正在使用 Apache Commons HTTP 直接调用 API(例如 api.box.com/2.0/folders/0),并使用“Authorization”标头传递令牌,这是有效的。但我想知道我是否可以使用 SDK。

【问题讨论】:

    标签: box-api boxapiv2


    【解决方案1】:

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

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

    1) 使用您正在做的任何事情来获取授权令牌。此过程还应为您提供刷新令牌
    2) 使用客户端 ID、客户端密码、授权和刷新设置您的 BoxClient。
    3) 如您所见,拨打电话。

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

    【讨论】:

    • 谢谢迈克尔!我会试试这个。
    猜你喜欢
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 2012-06-20
    • 2012-04-18
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多