创建和管理会话

会话是 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:显示网址或生成二维码 供用户扫描的二维码
  3. 轮询会话:
    1. 使用 pollingConfig 中建议的轮询间隔。
    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,请妥善处理超时。