本指南介绍应用如何向对 User Deletion API 的请求进行授权。
向请求授权
用户要在 Google Analytics 网站上查看其账号信息,都必须先登录其 Google 账号。同样,当用户首次访问您的应用时,他们需要授权您的应用访问其数据。
您的应用向 Google Analytics API 发出的每个请求都必须包含授权令牌。Google 也可通过此令牌来识别您的应用。
关于授权协议
您的应用必须使用 OAuth 2.0 向请求授权,其他任何授权协议均不受支持。如果您的应用使用使用 Google 账号登录,系统会代您执行授权方面的某些操作。
使用 OAuth 2.0 向请求授权
向 Google Analytics API 发出的所有请求均须由经过身份验证的用户授权。
根据您所编写的应用的类型,OAuth 2.0 的具体授权流程可能会有所不同。下面是适用于所有应用类型的大致流程:
- 开发应用时,您需要使用 Google API 控制台注册该应用。然后,Google 会提供您稍后需要用到的信息,例如客户端 ID 和客户端密钥。
- 在 Google API 控制台中激活 Google Analytics API。(如果 API 控制台中未列出该 API,请跳过这一步。)
- 当您的应用需要访问用户数据时,它会请求 Google 提供特定范围的访问权限。
- Google 会向相应用户显示权限请求页面,让用户授权您的应用请求他们的某些数据。
- 待该用户同意后,Google 会为您的应用提供一个时效很短的访问令牌。
- 您的应用会请求获取用户数据,并在请求中附上该访问令牌。
- 如果 Google 确定您的请求及令牌有效,就会返回您所请求的数据。
有些流程还包含其他步骤,例如使用刷新令牌获取新的访问令牌。如需详细了解适用于各类应用的不同流程,请参阅 Google 的 OAuth 2.0 文档。
以下是 Google Analytics API 的 OAuth 2.0 作用域信息:
范围 | 含义 |
---|---|
https://www.googleapis.com/auth/analytics.user.deletion |
使用 User Deletion API 删除数据。 |
要通过 OAuth 2.0 请求访问权限,您的应用既需要作用域信息,也需要 Google 在您注册应用时提供的相关信息(如客户端 ID 和客户端密钥)。
提示:Google API 客户端库可帮您处理部分授权流程,并且支持多种编程语言;有关详情,请参阅库和示例页面。
常见的 OAuth 2.0 流程
下面列出了特定 OAuth 2.0 流程的常见用例:
网络服务器
该流程适用于自动、离线或定期访问用户的 Google Analytics 数据。
示例:
- 使用最新的 Google Analytics 数据自动更新用户信息中心。
客户端
如果用户直接与应用互动,以通过浏览器访问其 Google Analytics 数据,那么此流程是理想选择。此流程不再需要服务器端功能,不过也不能再自动/离线/定期生成报告。
示例:
- 基于浏览器的报告工具,例如 Google Analytics 查询浏览器。
已安装的应用
此流程适用于以软件包形式分发并由用户安装的应用。此流程要求应用或用户具有浏览器访问权限,才能完成身份验证流程。
示例:
- PC 或 Mac 上的桌面微件。
- 内容管理系统插件 - 与网络服务器或客户端相比,此流程的优势在于可以让您的应用使用单个 API 控制台项目。这样便可为用户提供汇总报告和简化的安装过程。
服务账号
服务账号可用于自动、离线或定期访问您自己账号的 Google Analytics 数据。例如,构建您自己的 Google Analytics 数据的实时信息中心,并与其他用户共享。
要开始使用 Google Analytics API,您需要先使用设置工具,该工具会引导您在 Google API 控制台中创建项目、启用 API 以及创建凭据。
要开设新的服务账号,请按以下步骤操作:
- 点击创建凭据 > 服务账号密钥。
- 选择要下载哪种格式的服务账号公钥/私钥文件,是标准的 P12 文件还是可由 Google API 客户端库加载的 JSON 文件。
接下来系统就会为您生成新的公钥/私钥对并将其下载到您的计算机;这对密钥仅此一份,您应负责妥善存储。
问题排查
在以下情况下,您的授权会失败:
如果您的
access_token
已过期,或者您对 API 使用了错误的作用域,则会收到401
状态代码。如果授权用户无权访问视图(资料),您会收到
403
状态代码。请确保您是使用正确用户的授权,并且该用户确实拥有您选择的视图(资料)。
OAuth 2.0 Playground
借助此工具,您可以通过网页界面完成整个授权流程。该工具还会显示进行授权查询所需的所有 HTTP 请求标头。如果您无法获得在自己的应用中工作的授权,应尝试通过 OAuth 2.0 Playground 来完成授权。然后,您就可以将 Playground 提供的 HTTP 标头和请求与您的应用发送到 Google Analytics 的内容进行比对。这项检查可帮助您轻松确保所使用的请求格式正确无误。
授权无效
当您尝试使用刷新令牌时,以下代码会返回 invalid_grant
错误:
- 您的服务器的时钟与网络时间协议 - NTP 不同步。
- 刷新令牌数量超出上限。
应用可以请求多个刷新令牌来访问单个 Google Analytics 账号。
例如,如果用户想要在多台机器上安装某个应用,并访问同一个 Google Analytics 账号,则需要为每台机器分别获取一个令牌。当刷新令牌的数量超出上限时,较早的令牌便会失效。如果应用试图使用失效的刷新令牌,系统将会返回 invalid_grant
错误响应。
对于每个唯一的 OAuth 2.0 客户端和 Google Analytics 账号对,刷新令牌数量上限为 25。如果应用继续为同一客户端/账号对请求刷新令牌,那么在发出第 26 个令牌后,之前发出的第 1 个刷新令牌将失效。发出第 27 个刷新令牌会导致第 2 个之前发出的令牌失效,依此类推。