Box.com - 如何使用服务号爬取所有企业用户的box文件

Box.com - How to use a service account to crawl all enterprise users' box files

我正在使用 Box.com Java SDK。

我想遍历我 Box.com 企业中的用户并抓取每个人帐户中的文档。

我已经使用 JWT 为 OAuth2.0 设置了身份验证类型。我启用了 "As-User" header。我已经将 "User Access" 更新为 "All Users",这样我就可以看到所有用户文件,无论他们是通过 https://box.com 网站还是完全在后端。

如果我以这个用户的身份请求 /0 中的所有文件,它会 return 为我系统上所有用户的所有文件吗?

如何开始抓取每个用户文件?

我试过了,似乎有效...

public static void main(String[] args) throws IOException {
{
        String privateKey = new String(Files.readAllBytes(Paths.get(PRIVATE_KEY_FILE)));

        JWTEncryptionPreferences encryptionPref = new JWTEncryptionPreferences();
        encryptionPref.setPublicKeyID(PUBLIC_KEY_ID);
        encryptionPref.setPrivateKey(privateKey);
        encryptionPref.setPrivateKeyPassword(PRIVATE_KEY_PASSWORD);
        encryptionPref.setEncryptionAlgorithm(EncryptionAlgorithm.RSA_SHA_256);

        IAccessTokenCache accessTokenCache = new InMemoryLRUAccessTokenCache(MAX_CACHE_ENTRIES);

        BoxDeveloperEditionAPIConnection api = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(ENTERPRISE_ID, CLIENT_ID, CLIENT_SECRET, encryptionPref, accessTokenCache);

        Iterable<com.box.sdk.BoxUser.Info> users = BoxUser.getAllEnterpriseUsers(api, "App");
        for (BoxUser.Info user : users) {

            BoxDeveloperEditionAPIConnection userApi = BoxDeveloperEditionAPIConnection.getAppUserConnection(user.getID(), CLIENT_ID, CLIENT_SECRET, encryptionPref, accessTokenCache);
            System.out.println(new BoxUser(userApi, user.getID()).getInfo().getName());

            BoxFolder boxFolder = BoxFolder.getRootFolder(userApi);
            Iterable<com.box.sdk.BoxItem.Info> items = boxFolder.getChildren();
            for (BoxItem.Info item : items) {
                System.out.println("\t" + item.getName());
            }
        }
}