授权范围

Google Photos Library API 包含多个用于访问媒体内容和影集的范围。根据开发者请求的范围,各种调用返回的响应会有所不同。

您的应用向 Google Photos Library API 发送的每个请求都必须包含授权令牌。Google 也可通过此令牌识别您的应用。

关于授权协议

您的应用必须使用 OAuth 2.0 向请求授权,其他任何授权协议均不受支持。如果您的应用使用使用 Google 账号登录,系统会代您执行授权方面的某些操作。

使用 OAuth 2.0 向请求授权

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

根据您所编写的应用的类型,OAuth 2.0 的具体授权流程可能会有所不同。下面是适用于所有应用类型的大致流程:

  1. 开发应用时,您需要使用 Google API 控制台注册该应用。然后,Google 会提供您稍后需要用到的信息,例如客户端 ID 和客户端密钥。
  2. 在 Google API 控制台中激活 Google Photos Library API。(如果 API 控制台中未列出该 API,请跳过这一步。)
  3. 当您的应用需要访问用户数据时,它会请求 Google 提供特定范围的访问权限。
  4. Google 会向相应用户显示权限请求页面,让用户授权您的应用请求他们的某些数据。
  5. 待该用户同意后,Google 会为您的应用提供一个时效很短的访问令牌
  6. 您的应用会请求获取用户数据,并在请求中附上该访问令牌。
  7. 如果 Google 确定您的请求及令牌有效,就会返回您所请求的数据。

有些流程还包含其他步骤,例如使用刷新令牌获取新的访问令牌。如需详细了解适用于各类应用的不同流程,请参阅 Google 的 OAuth 2.0 文档

以下是 Google Photos Library API 的 OAuth 2.0 范围信息:

范围 含义
https://www.googleapis.com/auth/photoslibrary.readonly

仅拥有读取权限

列出媒体库和所有影集中的内容,访问所有媒体内容,并列出用户拥有的影集(包括与他们共享的影集)。

对于用户分享的影集,只有在也授予 photoslibrary.sharing 范围的情况下,系统才会返回分享属性

只有在也授予 photoslibrary.sharing 范围的情况下,影集的 shareInfo 属性和 mediaItemscontributorInfo 才可用。

有关详情,请参阅分享媒体内容

https://www.googleapis.com/auth/photoslibrary.appendonly

仅拥有写入权限

拥有上传字节、创建媒体内容、创建影集和添加扩充项的权限。仅允许在用户媒体库和应用创建的影集中创建新媒体内容。

https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata

拥有对开发者创建的媒体内容和影集的读取权限。有关详情,请参阅访问媒体内容列出媒体库内容、影集和媒体内容

应与 photoslibrary.appendonly 范围一起请求。

https://www.googleapis.com/auth/photoslibrary.edit.appcreateddata

仅拥有编辑权限。

拥有更改开发者创建的影集和媒体内容的以下详细信息的权限:

https://www.googleapis.com/auth/photoslibrary.sharing

共享通话的权限

拥有创建影集、分享影集、向其中上传媒体内容以及加入共享影集的权限。

https://www.googleapis.com/auth/photoslibrary

不推荐。请仅通过增量授权请求所需范围的访问权限。

访问 photoslibrary.appendonlyphotoslibrary.readonly 范围。不包括 photoslibrary.sharingphotoslibrary.edit 访问权限。

要通过 OAuth 2.0 请求访问权限,您的应用既需要授权范围信息,也需要 Google 在您注册应用时提供的信息(如客户端 ID 和客户端密钥)。

提示:Google API 客户端库可帮您处理部分授权流程,并且支持多种编程语言;有关详情,请参阅库和示例页面

选择范围

一般来说,应尽可能选择限制最严格的范围,并避免请求应用不需要的范围。用户更容易授予对明确说明的有限范围的访问权限。除非用户信任您的应用并了解该应用需要这些信息的原因,否则他们可能会犹豫是否要授予其对媒体内容的广泛访问权限。

逐步请求范围

按照授权最佳实践,您的应用应仅在需要时请求范围。请避免在登录时预先请求应用的所有范围。请改为提供理由,并在上下文中发出请求。根据用户体验指南和最佳做法,在发送通知并征求用户同意时,明确说明您会如何处理用户数据,以及用户授予访问权限后将获得哪些好处。

服务账号

Library API 不支持服务帐号。您的应用必须使用其他可用的 OAuth 2.0 流程,例如,适用于网络服务器应用的 OAuth 2.0 或适用于移动和桌面应用的 OAuth 2.0。