您可以通过 Google Cloud 访问 Google Health API。如需启用该 API 并授权 Google 账号,您需要一个 Google Cloud 项目。
无论您是现有的 Fitbit API 开发者,还是 Google Health API 的新手,都需要完成此步骤才能调用该 API。
创建项目和 OAuth 客户端
使用启用 API 并获取 OAuth 2.0 客户端 ID 按钮启用 Google Health API 并获取 OAuth 2.0 客户端 ID:
- 如果您有想要用于 Google Health API 的现有 Google Cloud 项目,请先确保您已登录该项目的管理员账号。然后,点击该按钮后,从可用项目列表中选择现有项目。 否则,请创建一个新项目。
- 当系统询问“您从何处进行调用?”时,请选择网络服务器 。
- 输入 https://www.google.com 作为已获授权的重定向 URI 的值。您需要重定向 URI 才能使用 OAuth 2.0 获取授权代码。
- 设置完成后,复制 OAuth 2.0 客户端 ID 和客户端密钥值,并将凭据 JSON 下载到本地机器 。
如果您想手动设置 Google Cloud 项目,或者验证设置并再次检索凭据,请执行以下操作:
如需详细了解如何使用 Google 控制台设置 OAuth 2.0,请参阅 使用 OAuth 2.0 访问 Google API。
添加测试用户
默认情况下,新创建的 OAuth 客户端处于未验证状态,测试和生产用途的用户上限均为 100 人。如需在此期间启用授权,您必须手动将每个用户的电子邮件地址添加到项目配置中的“测试用户”列表中。
在“ 受众群体 ”页面上更新测试用户列表:
- 在此页面上,您应该会看到“发布状态”设置为测试,而 “用户类型”设置为外部。
- 在“测试用户”部分下,点击 + 添加用户。输入应允许向您的应用授予访问其健康数据权限的任何测试用户的电子邮件地址。
- 点击保存 。
如需使用 Google Health API 支持 100 位以上的用户,您需要完成第三方安全审核。如需了解详情,请参阅 OAuth 应用验证帮助中心。
添加范围
您必须在 数据访问权限 页面上指定允许客户端调用的范围:
- 在此页面上,点击添加或移除范围 。
- 在“API”列中,搜索“Google Health API”。选择应用所需的范围。
- 选择所有需要的范围后,点击更新 以返回“数据访问权限”页面。
- 点击保存 。
您已完成客户端 ID 的设置,现在应该可以调用 Google Health API 了。
更新范围
您可以在身份验证请求中将 prompt 参数设置为 consent,以提示用户重新授权您的应用。如果包含 prompt=consent,则每次应用请求访问范围授权时,系统都会显示权限请求页面,即使之前已向您的 Google API 项目授予所有范围也是如此。
如需使用 prompt=consent 参数添加或更改范围,请按以下步骤操作:
确定应用所需的完整 范围列表。此列表应包含现有范围以及您需要添加的任何新范围。
修改授权网址中的 scope 参数,以包含更新后的范围值列表(以空格分隔)。
将
prompt=consent附加到身份验证 URI 参数。这会强制授权服务器在向客户端返回信息之前提示用户授予权限。以下示例展示了向 Google 的 OAuth 2.0 授权端点发出的 HTTPS GET 请求,该请求请求了多个范围,并附加了
prompt=consent:https://accounts.google.com/o/oauth2/v2/auth?client_id=client-id&redirect_uri=redirect-uri&response_type=code&access_type=offline&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly%20https://www.googleapis.com/auth/googlehealth.sleep.readonly&prompt=consent
当用户点击更新后的链接时,系统会向其显示一个权限请求页面,其中列出了所有请求的范围。用户点击“继续”或“允许”后,您将收到一个新的授权代码,该代码可用于交换涵盖全套范围的令牌。
仅在必要时(例如,当您需要获取新的刷新令牌或请求的范围发生变化时)才包含
prompt=consent。
OAuth2 客户端库
如需查看用于与热门 框架集成的可用 OAuth2 客户端库列表,请参阅 使用 OAuth 2.0 访问 Google API。
刷新令牌
如需长期访问 Google API 而无需用户不断重新进行身份验证,您的应用必须使用刷新令牌。如需了解 全面的实现详情(包括所需的特定 HTTP 请求 和参数),请参阅Google 身份平台 文档。
如需将刷新令牌交换为访问令牌,请向 Google OAuth 2.0 令牌端点发出 HTTPS POST 调用。以下代码段展示了一个示例请求和响应:
请求
curl -L -X POST 'https://oauth2.googleapis.com/token' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id=client-id&client_secret=client-secret&refresh_token=refresh-token&grant_type=refresh_token'
响应
{
"access_token": "access-token",
"expires_in": 3599,
"scope": "scope-list",
"token_type": "Bearer",
"refresh_token": "refresh-token",
"refresh_token_expires_in": 112154
}测试期间的令牌行为
请注意刷新令牌的行为方式取决于 Google Cloud 项目的发布状态:
- 测试模式: 如果您的 OAuth 权限请求页面配置为“测试”发布状态,则发出的刷新令牌是基于时间的,并在 7 天后过期。在此期间,您将收到一个刷新令牌,该令牌在到期之前一直有效,可用于获取新的访问令牌。
- 已发布模式: 一旦您的应用移至“生产中”状态,刷新令牌通常不会过期,除非被撤消或长时间(通常为六个月)未使用。
为了提供无缝的用户体验,请确保在将应用移至生产环境之前发布应用,以避免令牌在 7 天后过期。
跨账号保护 (RISC API)
如果您希望在事件令牌或账号关联发生更改(例如账号断开连接或令牌被撤消)时收到通知,以便清理存储的令牌并更新界面连接状态,请启用风险和事件共享与协调 (RISC)。启用 RISC API 是可选操作。
如需为您的 Google Cloud 项目启用 RISC API,请执行以下操作:
- 在 Google Cloud 控制台中打开 RISC API 页面。确保您已选择用于 Google Health API 的项目。
- 阅读 RISC 条款,并 确保您了解相关要求。
- 如果您同意这些条款,请点击启用 。
启用该 API 后,您必须创建并注册 HTTPS 端点,以接收和验证 Google 发送的事件令牌。
如需详细了解跨账号保护和 RISC,请参阅 使用跨账号保护功能保护用户账号。