会话是 Picker API 的核心,可为用户提供一种安全且受控的方式,以便从 Google 相册媒体库中选择照片和视频。本指南概述了如何创建、管理和有效轮询会话,以便在应用中实现无缝的照片选择。
前期准备
- 配置应用:启用 API 并设置身份验证。如需了解详细步骤,请参阅配置应用。
- 了解流程:查看开始使用 Picker API,大致了解整个照片选择流程。
- 查看所需的授权范围:使用会话需要
photospicker.mediaitems.readonly
范围。如需详细了解范围,请参阅授权范围。
会话生命周期
Picker API 提供了一些方法,用于创建会话、检索会话的相关信息以及删除会话。对用户进行身份验证后,您可以使用会话来管理照片选择生命周期。
创建会话
创建会话,以便用户可以直接从 Google 相册应用中安全地选择照片,并将其分享回您的应用。
sessions.create
生成新会话,返回可向用户显示的唯一 pickerUri
。会话会一直保持活动状态,直到用户成功选择媒体内容或会话超时。对于基于 Web 的应用,您可以将 /autoclose
附加到 pickerUri
,以便在用户完成选择后自动关闭 Google 相册窗口或标签页 - 详情请参阅照片选择:用户看到的内容。
会话次数限制
了解会话限制。Picker API 会限制您可以创建的会话数量,以确保负责任的使用并防止滥用。在正常情况下,您不太可能达到这些限制。不过,您应主动跟踪并清理会话,以避免出现任何问题。
轮询和监控会话
创建会话后,定期轮询 sessions.get
端点以获取会话的状态。当用户完成选择时,响应中的 mediaItemsSet
属性会返回 true
。
请务必使用高效的轮询。sessions.get
响应包含 pollingConfig
对象。使用以下字段有助于您避免不必要的调用,并打造顺畅的用户体验:
pollInterval
:最佳轮询间隔timeoutIn
:超时时长
如需了解详情,请参阅轮询流程示例。
删除和清理会话
sessions.delete
移除会话,通常用于在用户完成媒体选择后或会话超时后进行清理。
最佳做法是,在用户选择媒体项且您的应用已检索到媒体项字节后,立即删除会话。
轮询流程示例
以下示例展示了如何创建会话并对其进行轮询。在首次对用户进行身份验证后,创建新会话。
- 创建会话:调用
sessions.create
以启动新会话并获取pickerUri
。 - 向用户显示
pickerUri
:显示网址或生成二维码供用户扫描。阅读拣货员的拣货体验概览。 - 为会议投票:
- 使用
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
:如果用户已完成媒体项选择,则为 truepollingConfig.pollInterval
:建议的等待时间,之后再进行下一次轮询pollingConfig.timeoutIn
:超时前要等待的总时间
如果 mediaItemsSet
为 false 且尚未达到 timeoutIn
,请等待 pollInterval
,然后再次轮询。
如果 mediaItemsSet
为 true,则继续列出所选媒体项。
如果达到 timeoutIn
,请妥善处理超时情况。