Создание сеансов и управление ими

Сеансы — это основа API Picker, предоставляющая пользователям безопасный и контролируемый способ выбора фотографий и видео из библиотеки Google Фото. В этом руководстве описывается, как создавать, управлять и эффективно опрашивать сеансы, чтобы обеспечить бесперебойный выбор фотографий в вашем приложении.

Прежде чем начать

  • Настройте приложение: включите API и настройте аутентификацию. Подробные инструкции см. в разделе «Настройка приложения» .
  • Понимание процесса: ознакомьтесь с разделом Начало работы с API Picker, чтобы получить общее представление о процессе выбора фотографий.
  • Ознакомьтесь с требуемыми областями авторизации : для работы с сеансами требуется область photospicker.mediaitems.readonly . Подробнее об областях авторизации см. в разделе Области авторизации .

Жизненный цикл сеанса

API Picker предоставляет методы для создания, получения информации и удаления сеансов. После аутентификации пользователей вы можете использовать сеансы для управления жизненным циклом выбора фотографий.

  1. Создайте сеанс , чтобы пользователь мог выбирать элементы мультимедиа.
  2. Опросите сеанс , чтобы проверить, закончил ли пользователь выбор медиа-элементов.
  3. Перечислите и извлеките элементы мультимедиа .
  4. Очистите сессию , удалив ее.

Создавать сеансы

Создайте сеанс, чтобы ваши пользователи могли безопасно выбирать фотографии прямо из приложения Google Photos и делиться ими в вашем приложении.

sessions.create создаёт новый сеанс, возвращая уникальный pickerUri , который вы можете предоставить своим пользователям. Сеанс остаётся активным до тех пор, пока пользователь не выберет медиафайлы или пока не истечёт время его действия. В веб-приложениях можно добавить /autoclose к pickerUri , чтобы автоматически закрыть окно или вкладку Google Фото после того, как пользователь завершит выбор. Подробнее см. в разделе Выбор фотографий: что видят пользователи .

Ограничения сеанса

Помните об ограничениях на количество сеансов. API Picker устанавливает ограничения на количество создаваемых сеансов, чтобы обеспечить ответственное использование и предотвратить злоупотребления. В обычных условиях достижение этих ограничений маловероятно. Тем не менее, вам следует отслеживать и заблаговременно удалять сеансы , чтобы избежать проблем.

Опросы и мониторинг сессий

После создания сеанса периодически опрашивайте конечную точку sessions.get , чтобы получить его статус. Свойство mediaItemsSet в ответе возвращает true , когда пользователь завершил свой выбор.

Обязательно используйте эффективный опрос. Ответ sessions.get включает объект pollingConfig . Используйте следующие поля, чтобы избежать ненужных вызовов и обеспечить бесперебойную работу пользователя:

  • pollInterval : оптимальные интервалы опроса
  • timeoutIn : длительность тайм-аута

Более подробную информацию см. в примере потока опроса .

Удалить и очистить сеансы

sessions.delete удаляет сеанс, обычно используется для очистки после того, как пользователь завершил выбор носителя или если сеанс завершился по тайм-ауту.

Рекомендуется удалять сеансы после того, как пользователь выбрал элементы мультимедиа, а ваше приложение извлекло байты элемента мультимедиа .

Пример потока опроса

Это пример создания и опроса сеанса. После аутентификации пользователя создайте новый сеанс.

  1. Создайте сеанс: вызовите sessions.create , чтобы инициировать новый сеанс и получить pickerUri .
  2. Предъявите pickerUri пользователю: отобразите URL-адрес или сгенерируйте QR-код для сканирования пользователем. Ознакомьтесь с обзором пользовательского опыта подбора .
  3. Опрос сеанса:
    1. Используйте рекомендуемый pollInterval из pollingConfig .
    2. Проверьте, является ли mediaItemsSet истинным.
      1. Если true , перейти к выводу списка выбранных элементов мультимедиа.
      2. Если false , опрос продолжается до тех пор, пока не истечет timeoutIn .
    3. Грамотно обрабатывайте тайм-ауты и отмены.
GET https://photoslibrary.googleapis.com/v1/sessions/{sessionId}

Вот пример ответа:

{
  "id": string,
  "pickerUri": string,
  "pollingConfig": {
    object (PollingConfig)
  },
  "mediaItemsSet": boolean
}

Предоставьте pickerUri пользователю, а затем начните опрашивать сеанс.

Проверьте ответ на следующее:

  • mediaItemsSet : true, если пользователь завершил выбор медиа-элементов
  • pollingConfig.pollInterval : рекомендуемое время ожидания перед следующим опросом
  • pollingConfig.timeoutIn : общее время ожидания до истечения времени ожидания

Если mediaItemsSet имеет значение false и timeoutIn не достигнуто, дождитесь pollInterval , а затем повторите опрос.

Если mediaItemsSet имеет значение true, перейти к составлению списка выбранных элементов мультимедиа.

Если достигнуто timeoutIn , корректно обработайте тайм-аут.