Сеансы — это основа API Picker, предоставляющая пользователям безопасный и контролируемый способ выбора фотографий и видео из библиотеки Google Фото. В этом руководстве описывается, как создавать, управлять и эффективно опрашивать сеансы, чтобы обеспечить бесперебойный выбор фотографий в вашем приложении.
Прежде чем начать
- Настройте приложение: включите API и настройте аутентификацию. Подробные инструкции см. в разделе «Настройка приложения» .
 - Понимание процесса: ознакомьтесь с разделом Начало работы с API Picker, чтобы получить общее представление о процессе выбора фотографий.
 -  Ознакомьтесь с требуемыми областями авторизации : для работы с сеансами требуется область 
photospicker.mediaitems.readonly. Подробнее об областях авторизации см. в разделе Области авторизации . 
Жизненный цикл сеанса
API Picker предоставляет методы для создания, получения информации и удаления сеансов. После аутентификации пользователей вы можете использовать сеансы для управления жизненным циклом выбора фотографий.
- Создайте сеанс , чтобы пользователь мог выбирать элементы мультимедиа.
 - Опросите сеанс , чтобы проверить, закончил ли пользователь выбор медиа-элементов.
 - Перечислите и извлеките элементы мультимедиа .
 - Очистите сессию , удалив ее.
 
Создавать сеансы
Создайте сеанс, чтобы ваши пользователи могли безопасно выбирать фотографии прямо из приложения Google Photos и делиться ими в вашем приложении.
 sessions.create создаёт новый сеанс, возвращая уникальный pickerUri , который вы можете предоставить своим пользователям. Сеанс остаётся активным до тех пор, пока пользователь не выберет медиафайлы или пока не истечёт время его действия. В веб-приложениях можно добавить /autoclose к pickerUri , чтобы автоматически закрыть окно или вкладку Google Фото после того, как пользователь завершит выбор. Подробнее см. в разделе Выбор фотографий: что видят пользователи .
Ограничения сеанса
Помните об ограничениях на количество сеансов. API Picker устанавливает ограничения на количество создаваемых сеансов, чтобы обеспечить ответственное использование и предотвратить злоупотребления. В обычных условиях достижение этих ограничений маловероятно. Тем не менее, вам следует отслеживать и заблаговременно удалять сеансы , чтобы избежать проблем.
Опросы и мониторинг сессий
 После создания сеанса периодически опрашивайте конечную точку sessions.get , чтобы получить его статус. Свойство mediaItemsSet в ответе возвращает true , когда пользователь завершил свой выбор.
 Обязательно используйте эффективный опрос. Ответ sessions.get включает объект pollingConfig . Используйте следующие поля, чтобы избежать ненужных вызовов и обеспечить бесперебойную работу пользователя:
-  
pollInterval: оптимальные интервалы опроса -  
timeoutIn: длительность тайм-аута 
Более подробную информацию см. в примере потока опроса .
Удалить и очистить сеансы
 sessions.delete удаляет сеанс, обычно используется для очистки после того, как пользователь завершил выбор носителя или если сеанс завершился по тайм-ауту.
Рекомендуется удалять сеансы после того, как пользователь выбрал элементы мультимедиа, а ваше приложение извлекло байты элемента мультимедиа .
Пример потока опроса
Это пример создания и опроса сеанса. После аутентификации пользователя создайте новый сеанс.
-  Создайте сеанс: вызовите 
sessions.create, чтобы инициировать новый сеанс и получитьpickerUri. -  Предъявите 
pickerUriпользователю: отобразите URL-адрес или сгенерируйте QR-код для сканирования пользователем. Ознакомьтесь с обзором пользовательского опыта подбора . -  Опрос сеанса:
-  Используйте рекомендуемый pollInterval из 
pollingConfig. -  Проверьте, является ли 
mediaItemsSetистинным.-  Если 
true, перейти к выводу списка выбранных элементов мультимедиа. -  Если 
false, опрос продолжается до тех пор, пока не истечетtimeoutIn. 
 -  Если 
 - Грамотно обрабатывайте тайм-ауты и отмены.
 
 -  Используйте рекомендуемый pollInterval из 
 
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 , корректно обработайте тайм-аут.