세션 만들기 및 관리

세션은 Picker API의 핵심이며, 사용자가 Google 포토 라이브러리에서 사진과 동영상을 선택할 수 있는 안전하고 제어된 방법을 제공합니다. 이 가이드에서는 세션을 만들고, 관리하고, 효과적으로 폴링하여 앱에서 원활한 사진 선택을 사용 설정하는 방법을 설명합니다.

시작하기 전에

  • 앱 구성: API를 사용 설정하고 인증을 설정합니다. 자세한 단계는 앱 구성을 참고하세요.
  • 흐름 이해: Picker API 시작하기에서 전체 사진 선택 프로세스의 개요를 확인하세요.
  • 필요한 승인 범위 검토: 세션을 사용하려면 photospicker.mediaitems.readonly 범위가 필요합니다. 범위에 관한 자세한 내용은 승인 범위를 참고하세요.

세션 수명 주기

Picker API는 세션을 만들고, 세션에 관한 정보를 검색하고, 세션을 삭제하는 메서드를 제공합니다. 사용자를 인증한 후 세션을 사용하여 사진 선택 수명 주기를 관리할 수 있습니다.

  1. 사용자가 미디어 항목을 선택할 수 있도록 세션을 만듭니다.
  2. 세션을 폴링하여 사용자가 미디어 항목 선택을 완료했는지 확인합니다.
  3. 미디어 항목을 나열하고 가져옵니다.
  4. 세션을 삭제하여 정리합니다.

세션 만들기

사용자가 Google 포토 앱에서 직접 사진을 안전하게 선택하고 애플리케이션에 다시 공유할 수 있는 세션을 만듭니다.

sessions.create는 새 세션을 생성하여 사용자에게 표시할 수 있는 고유한 pickerUri를 반환합니다. 세션은 사용자가 미디어 항목을 선택하거나 세션이 타임아웃될 때까지 활성 상태로 유지됩니다.

세션 제한

세션 한도에 유의하세요. Picker API는 책임감 있는 사용을 보장하고 악용을 방지하기 위해 만들 수 있는 세션 수에 한도를 적용합니다. 일반적인 상황에서는 이 한도에 도달하지 않을 것입니다. 그러나 문제를 방지하려면 세션을 추적하고 사전에 정리해야 합니다.

세션 폴링 및 모니터링

세션이 생성되면 sessions.get 엔드포인트를 주기적으로 폴링하여 세션 상태를 가져옵니다. 사용자가 선택을 완료하면 응답의 mediaItemsSet 속성이 true를 반환합니다.

효율적인 폴링을 사용해야 합니다. sessions.get 응답에는 pollingConfig 객체가 포함됩니다. 다음 필드를 사용하여 불필요한 호출을 방지하고 원활한 사용자 환경을 만드세요.

  • pollInterval: 최적의 폴링 간격
  • timeoutIn: 제한 시간

자세한 내용은 예시 폴링 흐름을 참고하세요.

세션 삭제 및 정리

sessions.delete는 세션을 삭제합니다. 일반적으로 사용자가 미디어 선택을 완료한 후 또는 세션이 시간 초과된 경우 정리에 사용됩니다.

사용자가 미디어 항목을 선택하고 앱이 미디어 항목 바이트를 검색하면 세션을 삭제하는 것이 좋습니다.

폴링 흐름의 예

다음은 세션을 만들고 폴링하는 예입니다. 처음 사용자를 인증한 후 새 세션을 만듭니다.

  1. 세션 만들기: sessions.create를 호출하여 새 세션을 시작하고 pickerUri를 가져옵니다.
  2. 사용자에게 pickerUri 표시: 사용자가 스캔할 URL을 표시하거나 QR 코드를 생성합니다. 사용자의 선택 환경 개요를 읽어보세요.
  3. 세션 폴링:
    1. pollingConfig의 권장 pollInterval을 사용합니다.
    2. mediaItemsSet가 true인지 확인합니다.
      1. true인 경우 선택한 미디어 항목을 나열합니다.
      2. false이면 timeoutIn에 도달할 때까지 폴링을 계속합니다.
    3. 제한 시간 및 취소를 적절하게 처리합니다.
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에 도달하면 시간 초과를 적절하게 처리합니다.