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