Интеграция Aspose.Slides с Google Slides
Введение
Aspose.Slides теперь предоставляет интеграцию с Google Slides и Google Drive через свой API интеграции SaaS. Эта интеграция позволяет .NET‑приложениям конвертировать, редактировать, загружать и выгружать презентации Google Slides.
Что такое Google Slides?
Google Slides — бесплатное веб‑приложение для создания презентаций, разработанное Google. Оно позволяет пользователям создавать, редактировать и делиться слайдами онлайн, аналогично Microsoft PowerPoint. Поддерживает совместную работу в режиме реального времени, хранение в облаке и работает на любом устройстве с доступом к Интернету.
Google API
Прежде чем приступить к работе с презентацией Google Slides через Aspose.Slides, необходимо создать проект Google API и создать проект Google Cloud, затем включить нужные API.
Далее нужно выбрать способ доступа к Google API — Aspose.Slides Google Integration поддерживает два способа доступа к Google API:
Google Service AccountOAuth 2.0с взаимодействием пользователя через браузер.
Google Service Account
Сервисный аккаунт — специальный аккаунт Google, используемый приложениями или серверами для программного доступа к API Google без участия пользователя. Обычно используется для бекенд‑систем или автоматических задач. Сервисные аккаунты аутентифицируются с помощью JSON‑файла ключа и имеют собственный адрес электронной почты. Им могут быть назначены конкретные разрешения через Google Cloud IAM, и они часто применяются с API, такими как Google Drive, Sheets или BigQuery, для безопасного автоматизированного доступа к ресурсам.
OAuth 2.0
Другой распространённый способ доступа к Google API — OAuth 2.0 с взаимодействием пользователя через браузер. В этом потоке пользователь перенаправляется на страницу входа Google, где предоставляет приложению разрешения. После одобрения приложение получает код авторизации, который обменивается на токен доступа и токен обновления.
Токен доступа позволяет временно обращаться к API Google, а токен обновления можно хранить и использовать для получения новых токенов доступа без повторного входа пользователя. Это значит, что взаимодействие с браузером требуется только один раз, а последующий доступ к API полностью автоматизирован. Такой метод обычно используется для приложений, которым нужен доступ к данным пользователя (например, Gmail, Calendar или Drive) с его согласия.
Пишем код
Сначала добавьте NuGet‑пакет Aspose.Slides SaaS Integration в свой проект:
dotnet add package Aspose.Slides.SaaSIntegrations
Пример 1
В следующем примере мы скачиваем презентацию Google Slides из Google Drive и сохраняем её на локальном диске в виде PDF‑файла. Для авторизации используется Google Service Account, предположим, что JSON‑файл сервисного аккаунта уже загружен.
// Создать внешне управляемый HttpClient
HttpClient httpClient = new HttpClient();
// Создать провайдер авторизации, используя JSON‑файл сервисного аккаунта
IGoogleAuthorizationProvider account = new GoogleServiceAccountAuthProvider(@"service_account_json_file.json", httpClient);
// Инициализировать сервис интеграции Google Slides с провайдером авторизации
GoogleSlidesIntegration googleSlidesIntegration = new GoogleSlidesIntegration(account, httpClient);
// Загрузить презентацию из Google Drive по её идентификатору файла в экземпляр IPresentation Aspose.Slides
using IPresentation pres = await googleSlidesIntegration.LoadPresentationAsync("1A2B3C4D5E6F7G8H9I0J");
// При необходимости изменить презентацию (например, удалить второй слайд)
pres.Slides.RemoveAt(1);
// Сохранить презентацию локально в виде PDF‑файла
pres.Save(@"GoogleDriveDownload.pdf", SaveFormat.Pdf);
Для удобства Aspose.Slides SaaS Integration предоставляет метод для получения списка всех файлов, доступных пользователю. Возвращаемые данные включают имя файла, тип MIME и идентификатор файла.
// Получить список файлов, доступных предоставленному сервисному аккаунту
var availableFiles = await googleSlidesIntegration.GetDriveFileInfosAsync();
foreach (GoogleDriveFileInfo googleDriveFileInfo in availableFiles)
{
Console.WriteLine($"File name: {googleDriveFileInfo.Name}, File ID: {googleDriveFileInfo.Id}, MIME type: {googleDriveFileInfo.MimeType}");
}
Другой способ найти идентификатор файла — открыть презентацию в веб‑приложении Google Slides и увидеть его в URL.
Например, в следующем URL:
https://docs.google.com/presentation/d/1A2B3C4D5E6F7G8H9I0J/edit
Идентификатор файла:
1A2B3C4D5E6F7G8H9I0J
Пример 2
В следующем примере мы создаём презентацию PowerPoint с нуля и загружаем её в Google Drive в формате Google Slides. Для авторизации используется OAuth 2.0.
// Создать внешне управляемый HttpClient
HttpClient httpClient = new HttpClient();
// Создать провайдер авторизации, используя OAuth с client ID и client secret
IGoogleAuthorizationProvider account = new GoogleOAuthProvider("clientId", "clientSecret", httpClient);
// Инициализировать сервис интеграции Google Slides с провайдером авторизации
GoogleSlidesIntegration googleSlidesIntegration = new GoogleSlidesIntegration(account, httpClient);
// Создать пример презентации
using (var presentation = new Presentation())
{
var shape = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 100, 100, 300, 200);
shape.TextFrame.Text = "Hello from Google Drive!";
// Сохранить презентацию в корневую папку Google Drive в формате Google Slides
// Вы также можете выбрать любой другой формат экспорта, поддерживаемый Aspose.Slides
var newFileId = await googleSlidesIntegration.SavePresentationAsync(presentation, "New presentation", GoogleSaveFormatType.GoogleSlides);
Console.WriteLine($"Uploaded file ID: {newFileId}");
}
Если вы используете такой тип авторизации в приложении, взаимодействие с браузером требуется. Нужно выбрать учётную запись и подтвердить, что вы позволяете приложению доступ к API Google Drive. Всё — операция требуется только при первом запуске.
Пример 3
В следующем примере мы используем заранее полученный токен доступа. GoogleAccessTokenAuthProvider — реализация интерфейса IGoogleAuthorizationProvider, которая использует существующий OAuth 2.0 токен доступа для авторизации запросов к API Google. В отличие от провайдеров, инициирующих или управляющих OAuth‑потоком, этот класс полагается на вызывающего, который передаёт действительный токен доступа.
Этот провайдер полезен в системах, где токен доступа получен извне — обычно фронтенд‑приложением или другим сервисом — и передаётся бекенду. Особенно он подходит для распределённых окружений, где управление токенами обновления на сервере усложняет процесс или создаёт риск недействительности токена из‑за одновременных попыток обновления.
Пример демонстрирует, как заменить файл и обновить его имя в Google Drive, сохранив идентификатор файла.
// Создать HTTP клиент для выполнения запросов
using HttpClient httpClient = new HttpClient();
// Настроить аутентификацию Google Drive с использованием токена доступа
GoogleAccessTokenAuthProvider accessTokenAuthProvider = new GoogleAccessTokenAuthProvider("access_token");
// Инициализировать интеграцию с Google Slides/Drive, используя аутентификацию и HTTP клиент
GoogleSlidesIntegration googleSlidesIntegration =
new GoogleSlidesIntegration(accessTokenAuthProvider, httpClient);
// Создать пример презентации с использованием Aspose.Slides
using (var presentation = new Presentation())
{
// Добавить прямоугольную форму на первый слайд и установить её текст
var shape = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 100, 100, 300, 200);
shape.TextFrame.Text = "Hello from Google Drive!";
// Определить параметры сохранения PDF с конкретным качеством и настройками соответствия
ISaveOptions saveOptions = new PdfOptions()
{
JpegQuality = 50,
Compliance = PdfCompliance.PdfA1b
};
// Сохранить (заменить) существующий файл в Google Drive по ID, обновить его имя и экспортировать в PDF
await googleSlidesIntegration.SavePresentationToExistingFileAsync(
presentation,
"1A2B3C4D5E6F7G8H9I0J", // ID существующего файла в Google Drive
GoogleSaveFormatType.Pdf, // Желаемый формат сохранения
saveOptions,
"NewFileName.pdf" // Новое имя для файла
);
}
Итоги
Aspose.Slides теперь поддерживает дополнительный формат файлов для управления, упрощая автоматизацию облачных рабочих процессов по созданию, совместному использованию и редактированию презентаций.
В статье рассмотрены базовые возможности. Вы также можете сохранять файлы в подпапки, заменять существующие файлы и экспортировать их в Google Drive в различных форматах — не только в формате Google Slides.
Aspose.Slides SaaS Integration продолжит расширять поддержку платформ SaaS для презентаций, следите за будущими обновлениями.
FAQ
Нужен ли аккаунт Google Workspace для использования этой интеграции? Нет. Можно использовать как бесплатный аккаунт Google, так и аккаунт Google Workspace. Требуемый доступ зависит от прав в Google Drive и Slides.
Какой метод аутентификации выбрать — Service Account или OAuth 2.0?
Используйте Service Account для бекенд‑или автоматических процессов без взаимодействия с пользователем.
Используйте OAuth 2.0, если требуется доступ к файлам конкретного пользователя Google Slides или Drive с его согласия.
Можно ли работать с форматами, отличными от Google Slides? Да. Aspose.Slides позволяет сохранять презентации в различные форматы (например, PDF, PPTX, HTML) перед загрузкой их в Google Drive.
Как получить идентификатор файла презентации Google Slides?
Идентификатор можно получить с помощью метода GetDriveFileInfosAsync() или скопировать из URL презентации в Google Slides.
Поддерживает ли интеграция замену существующего файла в Google Drive?
Да. Используйте метод SavePresentationToExistingFileAsync для обновления файла с сохранением его идентификатора.
Требуется ли взаимодействие с браузером каждый раз при использовании OAuth 2.0? Нет. Взаимодействие с браузером необходимо только при первой авторизации. После этого сохранённые токены обновления позволяют автоматический доступ.