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