最佳实践

授权

向 Google Photos Library API 发出的所有请求都必须由已通过身份验证的用户授权。

OAuth 2.0 授权流程的具体内容会略有不同, 了解您所编写的应用类型以下常规流程 适用于所有应用类型:

  1. 执行以下操作,为授权流程做好准备: <ph type="x-smartling-placeholder">
      </ph>
    • 使用 Google API 控制台
    • 激活 Library API 并检索 OAuth 详细信息,例如 客户端 ID 和客户端密钥如需了解详情,请参阅 开始使用
  2. 为了访问用户数据,该应用会向 Google 请求获取 特定访问范围内
  3. Google 会向用户显示同意屏幕,请求他们授权 来请求获取某些数据
  4. 如果用户批准,Google 会向该应用提供一个访问令牌 会在短时间后过期
  5. 应用发出用户数据请求,并附上访问令牌 。
  6. 如果 Google 确定请求和令牌有效,就会返回 请求的数据

要确定适合您应用的作用域,请参阅授权 范围

对于某些应用类型,此流程还包含其他步骤,例如使用 刷新令牌以获取新的访问令牌。如需详细了解 请参阅使用 OAuth 2.0 访问 Google API

缓存

保持数据最新。

如果您需要暂时存储媒体内容(例如缩略图、照片或视频) 出于性能方面的原因,每次使用时缓存时间不要超过 60 分钟 指南。

此外,您不应存储 baseUrls,它大约会在 60 天后过期。 分钟。

媒体内容 ID 和影集 ID,用于对用户媒体库中的内容进行唯一标识 不受缓存限制您可以无限期存储这些 ID (以应用的隐私权政策为准)。使用媒体内容 ID 和影集 ID 重新使用适当的端点检索可访问的网址和数据。对于 请参阅获取媒体内容 项商品详情 影集

如果您要刷新许多媒体项,可能更高效的做法是存储 返回媒体内容的搜索参数,并重新提交查询以重新加载 数据。

SSL 访问

使用 以下网址:

https://photoslibrary.googleapis.com/v1/service/output?parameters

通过 HTTP 发出的请求将被拒绝。

错误处理

如需了解如何处理 API 返回的错误,请参阅 API 处理 错误

重试失败的请求

客户端应在出现 5xx 错误时使用指数退避算法重试,如 指数退避算法。最短延迟时间应为 1 s (除非另有说明)。

对于 429 错误,客户端可能会以最短 30s 延迟重试。对于所有其他 错误,可能不适用重试。确保您的请求具有幂等性,并查看 错误消息以获取指导。

指数退避算法

在极少数情况下,处理您的请求时可能会出错。 4XX5XX HTTP 响应代码,或者 TCP 连接可能会在某处失败 客户端与 Google 服务器之间的通信。通常, 请求。如果原始请求失败,后续请求可能会成功。不过, 一定要不要循环,即反复向 Google 的服务器发出请求。这个 循环行为可能会使客户端与 Google 之间的网络过载, 会给多方带来问题。

更好的方法是不断增加两次重试之间的延迟。通常 每次尝试都会使延迟时间增加一个乘法因子, 这称为指数函数 退避时间

您还应该注意,应用中没有更高层级的重试代码 调用链来快速连续地重复发出请求。

合理使用 Google API

设计不佳的 API 客户端可能会给 以及 Google 服务器上存储的数据。本部分介绍了 API 的客户端。遵循这些最佳做法有助于避免 应用程序因无意中滥用 API 而遭到阻止。

同步的请求

大量向 Google API 同步的请求可能看起来像 针对 Google 基础架构的分布式拒绝服务 (DDoS) 攻击; 进行相应处理。为避免这种情况,您应确保 API 请求 无法在客户端之间同步。

例如,假设某个应用显示当前时间 可用区。此应用可能会在客户端操作系统中设置警报 在分钟开始时唤醒设备,以便系统显示 已更新。在处理过程中,应用不应进行任何 API 调用 与该闹钟关联的操作

发出 API 调用来响应固定警报是很不好的,因为它会导致 API 调用会同步到分钟开始时,即使在不同时间 而不是随时间均匀分布。设计不佳 这样产生的流量将达到正常水平的六十倍 。

相反,一种可能的良好设计是将第二个警报设置为随机 所选时间。当第二个闹铃触发时,应用会调用任意 以及存储结果所需的 API。要在 分钟,应用会使用之前存储的结果,而不是调用 API。使用此方法,API 调用会随时间均匀分布。此外, 在显示更新时,API 调用不会在呈现延迟的情况下呈现。

除了分钟开始之外, 应注意不要定位在 每天午夜一次。