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.
- Crie uma sessão para permitir que um usuário selecione itens de mídia.
- Faça uma pesquisa na sessão para verificar quando o usuário terminou de selecionar itens de mídia.
- Listar e recuperar os itens de mídia.
- 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 ideaistimeoutIn
: 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.
- Criar uma sessão:chame
sessions.create
para iniciar uma nova sessão e receber opickerUri
. - 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. - Faça uma pesquisa na sessão:
- Use o pollInterval recomendado de
pollingConfig
. - Verifique se
mediaItemsSet
é verdadeiro.- Se
true
, prossiga para listar os itens de mídia selecionados. - Se
false
, continue a pesquisa até atingirtimeoutIn
.
- Se
- Lide com tempos limite e cancelamentos de maneira adequada.
- Use o pollInterval recomendado de
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 pesquisapollingConfig.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.