Criar e gerenciar sessões

As sessões são a base da API Picker, oferecendo uma maneira segura e controlada para os usuários selecionarem fotos e vídeos da biblioteca do Google Fotos. Este guia descreve como criar, gerenciar e pesquisar sessões de forma eficaz para permitir uma seleção de fotos perfeita no seu app.

Antes de começar

  • Configure seu app:ative a API e configure a autenticação. Consulte Configurar seu app para ver etapas detalhadas.
  • Entenda o fluxo:leia como começar a usar a API Picker para ter uma visão geral de todo o processo de seleção de fotos.
  • Revise os escopos de autorização necessários: para trabalhar com sessões, é preciso ter o escopo photospicker.mediaitems.readonly. Para mais informações sobre escopos, consulte Escopos de autorização.

Ciclo de vida da sessão

A API Picker fornece métodos para criar, recuperar informações sobre e excluir sessões. Depois de autenticar os usuários, você pode usar sessões para gerenciar o ciclo de vida da seleção de fotos.

  1. Crie uma sessão para permitir que um usuário selecione itens de mídia.
  2. Faça uma pesquisa na sessão para verificar quando o usuário terminou de selecionar itens de mídia.
  3. Listar e recuperar os itens de mídia.
  4. Limpe a sessão excluindo-a.

Criar sessões

Crie uma sessão para que os usuários possam escolher fotos diretamente do app Google Fotos e compartilhar com seu aplicativo de forma segura.

O sessions.create gera uma nova sessão, retornando um pickerUri exclusivo que você pode apresentar aos usuários. A sessão permanece ativa até que o usuário selecione itens de mídia ou que ela expire. Para aplicativos baseados na Web, adicione /autoclose ao pickerUri para fechar automaticamente a janela ou guia do Google Fotos depois que o usuário concluir a seleção. Consulte Seleção de fotos: o que os usuários veem para mais detalhes.

Limites de sessão

Esteja ciente dos limites de sessão. A API Picker impõe limites ao número de sessões que você pode criar para garantir o uso responsável e evitar abusos. Em circunstâncias normais, é improvável que você atinja esses limites. No entanto, acompanhe e limpe as sessões de forma proativa para evitar problemas.

Fazer pesquisas e monitorar sessões

Depois que uma sessão é criada, faça uma pesquisa periódica no endpoint sessions.get para receber o status dela. A propriedade mediaItemsSet na resposta retorna true quando o usuário conclui a seleção.

Use pesquisas eficientes. A resposta sessions.get inclui o objeto pollingConfig. Use os seguintes campos para evitar chamadas desnecessárias e criar uma experiência do usuário tranquila:

  • pollInterval: intervalos de pesquisa ideais
  • timeoutIn: duração do tempo limite

Consulte o Exemplo de fluxo de pesquisa para mais detalhes.

Excluir e limpar sessões

sessions.delete remove uma sessão, geralmente usada para limpeza depois que o usuário termina de selecionar mídia ou se a sessão expira.

É recomendável excluir as sessões depois que o usuário selecionar itens de mídia e seu app recuperar os bytes do item de mídia.

Exemplo de fluxo de pesquisa

Este é um exemplo de criação e sondagem de uma sessão. Depois de autenticar o usuário pela primeira vez, crie uma nova sessão.

  1. Criar uma sessão:chame sessions.create para iniciar uma nova sessão e receber o pickerUri.
  2. Apresente o pickerUri ao usuário:mostre o URL ou gere um QR code para o usuário ler. Leia uma visão geral da experiência de seleção do usuário.
  3. Faça uma pesquisa na sessão:
    1. Use o pollInterval recomendado de pollingConfig.
    2. Verifique se mediaItemsSet é verdadeiro.
      1. Se true, prossiga para listar os itens de mídia selecionados.
      2. Se false, continue a pesquisa até atingir timeoutIn.
    3. Lide com tempos limite e cancelamentos de maneira adequada.
GET https://photoslibrary.googleapis.com/v1/sessions/{sessionId}

Veja um exemplo de resposta:

{
  "id": string,
  "pickerUri": string,
  "pollingConfig": {
    object (PollingConfig)
  },
  "mediaItemsSet": boolean
}

Apresente o pickerUri ao usuário e comece a consultar a sessão.

Verifique se a resposta tem o seguinte:

  • mediaItemsSet: verdadeiro se o usuário tiver terminado de selecionar itens de mídia.
  • pollingConfig.pollInterval: tempo recomendado para aguardar antes da próxima pesquisa
  • pollingConfig.timeoutIn: tempo total de espera antes de atingir o tempo limite

Se mediaItemsSet for "false" e timeoutIn não tiver sido alcançado, aguarde pollInterval e faça a pesquisa novamente.

Se mediaItemsSet for verdadeiro, liste os itens de mídia selecionados.

Se timeoutIn for atingido, trate o tempo limite de maneira adequada.