Экспорт/загрузка презентаций и электронных таблиц, выдающих себя за других пользователей домена с правами администратора

Мне нужно экспортировать/скачать все файлы других пользователей домена. Я использовал вход клиента с учетной записью администратора, чтобы просмотреть все файлы пользователей домена. однако только документ может быть экспортирован/загружен, остальные не могут быть экспортированы.

так какой формат URL-адреса загрузки для других (для файла, pdf, презентации и электронной таблицы) ??

мой URL для скачивания документа

https://docs.google.com/feeds/download/documents/[email protected]&docId=<id>&exportFormat=doc

моя программа выглядит следующим образом:

public class AuthExample {

private static DocsService docService = new DocsService("Auth Example");

public static void main(String[] args)
    throws Exception
{
    String adminUser = admin;
    String adminPassword = adminpasswd;
    String impersonatedUser = "[email protected]";

    docService.setUserCredentials(adminUser, adminPassword);
    URL url = new URL( "https://docs.google.com/feeds/" + impersonatedUser + "/private/full");
    DocumentListFeed feed = docService.getFeed(url, DocumentListFeed.class);
    for (DocumentListEntry entry : feed.getEntries()) {


String title = entry.getTitle().getPlainText();
System.out.println( title );

String type = entry.getType();
if ( type.equals("document") )
{
    String encodedAdminUser = URLEncoder.encode(adminUser);
    String resourceId = entry.getResourceId();
    String resourceIdNoPrefix = resourceId.substring( resourceId.indexOf(':')+1 );

    String downloadUrl =
        "https://docs.google.com/feeds/download/documents/Export" +
        "?xoauth_requestor=" + encodedAdminUser +
        "&docId=" + resourceIdNoPrefix +
        "&exportFormat=doc";

    downloadFile( downloadUrl, title + ".doc" );
}

    }
}



// Method pasted directly from Google documentation
public static void downloadFile(String exportUrl, String filepath)
    throws IOException, MalformedURLException, ServiceException
{
System.out.println("Exporting document from: " + exportUrl);
MediaContent mc = new MediaContent();
mc.setUri(exportUrl);
MediaSource ms = docService.getMedia(mc);

InputStream inStream = null;
FileOutputStream outStream = null;

try {
        inStream = ms.getInputStream();
    outStream = new FileOutputStream(filepath);
                    int c;
    while ((c = inStream.read()) != -1) {
    outStream.write(c);
    }
} finally {
    if (inStream != null) {
        inStream.close();
    }
    if (outStream != null) {
    outStream.flush();
        outStream.close();
    }
}
}

}


person Kenny Lin    schedule 01.06.2012    source источник


Ответы (1)


Не создавайте ссылку для скачивания вручную, вместо этого используйте ссылку на содержимое записи, как описано в документации:

https://developers.google.com/google-apps/documents-list/#downloading_documents_and_files

person Claudio Cherubino    schedule 01.06.2012
comment
если не создать ссылку для загрузки вручную, я получу исключение Нет информации заголовка аутентификации. однако файл и документ типа doc можно загрузить обычным образом. - person Kenny Lin; 04.06.2012