Сеансы — это основа 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
, корректно обработайте тайм-аут.