세션은 Picker API의 핵심이며 사용자가 Google 포토 라이브러리에서 사진과 동영상을 선택할 수 있는 안전하고 제어된 방법을 제공합니다. 이 가이드에서는 세션을 만들고, 관리하고, 효과적으로 폴링하여 앱에서 원활한 사진 선택을 사용 설정하는 방법을 설명합니다.
시작하기 전에
- 앱 구성: API를 사용 설정하고 인증을 설정합니다. 자세한 단계는 앱 구성을 참고하세요.
- 흐름 이해: Picker API 시작하기에서 전체 사진 선택 프로세스의 개요를 확인하세요.
- 필요한 승인 범위 검토: 세션을 사용하려면
photospicker.mediaitems.readonly
범위가 필요합니다. 범위에 관한 자세한 내용은 승인 범위를 참고하세요.
세션 수명 주기
Picker API는 세션을 만들고, 세션에 관한 정보를 검색하고, 세션을 삭제하는 메서드를 제공합니다. 사용자를 인증한 후 세션을 사용하여 사진 선택 수명 주기를 관리할 수 있습니다.
- 사용자가 미디어 항목을 선택할 수 있도록 세션을 만듭니다.
- 세션을 폴링하여 사용자가 미디어 항목 선택을 완료했는지 확인합니다.
- 미디어 항목을 나열하고 검색합니다.
- 세션을 삭제하여 정리합니다.
세션 만들기
사용자가 Google 포토 앱에서 직접 사진을 안전하게 선택하고 애플리케이션에 다시 공유할 수 있는 세션을 만듭니다.
sessions.create
는 새 세션을 생성하여 사용자에게 표시할 수 있는 고유한 pickerUri
를 반환합니다. 세션은 사용자가 미디어 항목을 선택하거나 세션이 타임아웃될 때까지 활성 상태로 유지됩니다.
세션 제한
세션 한도에 유의하세요. Picker API는 책임감 있는 사용을 보장하고 악용을 방지하기 위해 만들 수 있는 세션 수에 한도를 적용합니다. 일반적인 상황에서는 이 한도에 도달하지 않을 것입니다. 그러나 문제를 방지하려면 세션을 추적하고 사전에 정리해야 합니다.
세션 폴링 및 모니터링
세션이 생성되면 주기적으로 sessions.get
엔드포인트를 폴링하여 세션 상태를 가져옵니다. 사용자가 선택을 완료하면 응답의 mediaItemsSet
속성이 true
를 반환합니다.
효율적인 폴링을 사용해야 합니다. sessions.get
응답에는 pollingConfig
객체가 포함됩니다. 다음 필드를 사용하여 불필요한 호출을 방지하고 원활한 사용자 환경을 만드세요.
pollInterval
: 최적의 폴링 간격timeoutIn
: 제한 시간
자세한 내용은 예시 폴링 흐름을 참고하세요.
세션 삭제 및 정리
sessions.delete
는 세션을 삭제합니다. 일반적으로 사용자가 미디어 선택을 완료한 후 또는 세션이 시간 초과된 경우 정리에 사용됩니다.
사용자가 미디어 항목을 선택하고 앱에서 미디어 항목 바이트를 검색한 후에는 세션을 삭제하는 것이 좋습니다.
폴링 흐름의 예
다음은 세션을 만들고 폴링하는 예입니다. 먼저 사용자를 인증한 후 새 세션을 만듭니다.
- 세션 만들기:
sessions.create
를 호출하여 새 세션을 시작하고pickerUri
를 가져옵니다. - 사용자에게
pickerUri
표시: 사용자가 스캔할 URL을 표시하거나 QR 코드를 생성합니다. 사용자 선택 환경 개요를 읽어보세요. - 세션 폴링:
pollingConfig
의 권장 pollInterval을 사용합니다.mediaItemsSet
가 true인지 확인합니다.true
인 경우 선택한 미디어 항목을 나열합니다.false
이면timeoutIn
에 도달할 때까지 폴링을 계속합니다.
- 제한 시간 및 취소를 적절하게 처리합니다.
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
에 도달하면 시간 초과를 적절하게 처리합니다.