如何使用box.com java sdk自动验证

时间:2014-09-05 19:39:50

标签: java sdk box-api box

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

在那篇文章中,他问道:

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

来自" Skippy Ta"的最高评价答案告诉我我需要知道的大部分内容 EXCEPT 以下内容:

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

boxClient.authenticate(boxOAuthToken); 

用于初始身份验证,

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

用于刷新。

我无法将所有这些放在一起。首先,authenticate方法不接受String boxOAuthToken,它接受一个I​​AuthData对象,无论是什么。所以我无法进行初始身份验证。

即使我要进行初始身份验证,我也无法刷新,因为一旦我进行身份验证以便存储令牌,我就不知道如何访问令牌,如果我将该令牌存储为一个字符串,我不知道如何将它包装在正确的对象中并进行更新所提到的更新

// TODO: Update the stored access token.

以上评论。感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以查看javafx登录界面: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数据。