Сессии лежат в основе API Picker, предоставляя пользователям безопасный и контролируемый способ выбора фотографий и видео из библиотеки Google Фото. В этом руководстве описывается, как создавать, управлять и эффективно проводить опросы, чтобы обеспечить беспрепятственный выбор фотографий в вашем приложении.
Прежде чем начать
- Настройте свое приложение: включите API и настройте аутентификацию. Подробные инструкции см. в разделе Настройка приложения .
- Понимание процесса: просмотрите начало работы с API Picker, чтобы получить обзор всего процесса выбора фотографий.
- Просмотрите необходимые области авторизации . Для работы с сеансами требуется область
photospicker.mediaitems.readonly
. Дополнительные сведения об областях см. в разделе Области авторизации .
Жизненный цикл сеанса
API Picker предоставляет методы для создания, получения информации и удаления сеансов. После аутентификации пользователей вы можете использовать сеансы для управления жизненным циклом выбора фотографий.
- Создайте сеанс , чтобы позволить пользователю выбирать элементы мультимедиа.
- Опросите сеанс , чтобы проверить, когда пользователь закончил выбор элементов мультимедиа.
- Перечислите и извлеките элементы мультимедиа .
- Очистите сеанс, удалив его.
Создание сеансов
Создайте сеанс, чтобы ваши пользователи могли безопасно выбирать фотографии прямо из приложения Google Photos и отправлять их обратно в ваше приложение.
sessions.create
создает новый сеанс, возвращая уникальный pickerUri
, который вы можете предоставить своим пользователям. Сеанс остается активным до тех пор, пока пользователь не выберет успешно элементы мультимедиа или пока не истечет время сеанса.
Ограничения сеансов
Помните об ограничениях сеансов. 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
, корректно обработайте тайм-аут.