0

我的问题类似于这篇文章: How to get an access token without Box's authorization page

在那篇文章中,他问道:

我已被授予访问(协作)文件夹的权限。我需要的是每天访问该文件夹并从中获取文件。现在我生成的开发者令牌将在 1 小时后过期。有没有一种方法可以在没有第一站的情况下获得授权码,这需要用户界面。这样,每当我获取文件时,我都可以刷新访问令牌。

“Skippy Ta”中评分最高的答案告诉我我需要知道的大部分内容,除了以下内容:

如何使用开发人员令牌进行身份验证以及如何刷新?从我下载的 HelloWorld 示例应用程序 ( https://github.com/box/box-java-sdk-v2 )的 github 存储库中,我看到了这两个步骤:

boxClient.authenticate(boxOAuthToken); 

用于初始身份验证,以及

boxClient.addOAuthRefreshListener(new OAuthRefreshListener() {
    @Override
    public void onRefresh(IAuthData newAuthData) {
        // TODO: Update the stored access token.
    }
});

刷新。

我很难把所有这些放在一起。首先,authenticate 方法不接受 String boxOAuthToken,它接受一个 IAuthData 对象,不管它是什么。所以我无法进行初始身份验证。

即使我要实现初始身份验证,我也无法刷新,因为我不知道在通过身份验证后如何访问令牌以便存储它,如果我将该令牌存储为字符串,我不会知道如何将其包装在适当的对象中并进行

// TODO: Update the stored access token.

上面评论。谢谢你尽你所能的帮助。

4

1 回答 1

1

你可以看看 javafx 登录 UI:https ://github.com/box/box-java-sdk-v2/tree/master/BoxJavaFxOAuth

但无论如何,如果您需要从访问令牌和刷新令牌构建 BoxOAuthToken 对象并从中进行身份验证,您可以执行以下操作:

HashMap<String, String> tokenMap = new HashMap<String, String>();
tokenMap.put("access_token", access);
tokenMap.put("refresh_token", refresh);
BoxOAuthToken token = new BoxOAuthToken(tokenMap);
boxClient.authenticate(token);

至于刷新,sdk 会自动刷新。您唯一需要担心的是当您的应用程序退出并且您需要保持身份验证时。此时,您可以保存 oauth 令牌。刷新侦听器用于为您更新 oauth 令牌,因此在您需要保存 oauth 时,您拥有最新的 oauth 数据。

于 2014-10-06T20:31:19.110 回答