为 Android 应用设置 OAuth

Home API 使用 OAuth 2.0 授予对结构中设备的访问权限。OAuth 允许用户向应用或服务授予权限,而无需泄露其登录凭据。

如果您已有经过验证的 OAuth 客户端(例如,来自已发布的应用),则可以使用该客户端测试 Home API,而无需设置新的客户端。如需了解详情,请参阅如果您已有 OAuth 客户端

为应用签名

首先,在 Android Studio 中运行应用以生成调试证书。 Android Studio. 在 Android Studio 中运行或调试应用时,它 会自动生成用于开发和 调试的调试证书。 如需完整说明,请参阅 Android Studio:为调试 build 签名。

应用运行后,请执行以下操作:

  1. 将移动设备连接到本地机器。 Android Studio 会按型号列出 已连接的设备。从列表中选择您的设备,然后点击“运行项目” 。这会在您的移动设备上构建并安装示例应用。

    如需了解更详细的说明,请参阅 Android 开发者网站上的在硬件 设备 上运行应用。

  2. 停止正在运行的应用。

  3. 按照 Google Cloud Console 帮助网站上 设置 OAuth 2.0 / 原生应用 / Android 中详述的说明,获取调试证书的 SHA-1 指纹。

  1. 在 Google Cloud 控制台中,前往 项目选择器信息中心 ,然后选择要用于创建 OAuth 凭据的项目。
  2. 前往 API 和服务 页面,然后在导航菜单中点击凭据
  3. 如果您尚未为此 Google Cloud 项目配置权限请求页面,则会显示配置权限请求页面 按钮。在这种情况下,请按照以下步骤配置权限请求页面。否则,请继续下一部分。

    1. 点击配置权限请求页面 。系统会显示 OAuth 权限请求页面
    2. 根据您的使用情形,选择内部外部,然后 点击创建。系统会显示 OAuth 权限请求页面 窗格。
    3. 按照屏幕上的说明在应用信息页面 上输入信息,然后点击保存并继续 。系统会显示范围 窗格。
    4. 您无需添加任何范围,因此请点击保存并继续 。系统会显示测试用户 窗格。
    5. 点击受众群体 ,然后点击 + 添加用户 按钮。
    6. 输入您的测试用户电子邮件地址,然后点击保存 按钮。
    7. 点击保存并继续 。系统会显示摘要 窗格。
    8. 查看您的 OAuth 权限请求页面信息,然后点击返回信息中心

如需了解完整详情,请参阅 Google Cloud 控制台帮助网站上的设置 OAuth 权限请求 页面

注册应用并创建凭据

如需注册应用以使用 OAuth 2.0 并创建 OAuth 凭据,请按照 设置 OAuth 2.0中提供的说明操作。 您需要指明应用类型,即原生/Android 应用

按照 Google Cloud Console 帮助网站上 设置 OAuth 2.0 / 原生应用 中的 说明,将您通过为应用签名获得的 SHA-1 指纹添加到您在 Google Cloud 控制台中设置的 OAuth 客户端。

将移动设备连接到本地机器后,从列表中选择您的设备,然后再次点击运行项目 以高效运转。如需了解更详细的 说明,请参阅 Android 开发者网站上的在硬件设备上运行应用

如果您已有 OAuth 客户端

如果您已有已发布应用的经过验证的 OAuth 客户端,则可以使用现有 OAuth 客户端测试 Home API。

Google Home Developer Console 测试和使用 Home API 不需要注册。 不过,您仍需要获得批准的 Developer Console注册才能发布应用,即使您有来自其他集成的 经过验证的 OAuth 客户端也是如此。

需要注意以下几点:

  • 使用现有 OAuth 客户端时,用户人数上限为 100 人。如需了解如何添加测试用户,请参阅 设置 OAuth 权限请求 页面。 无论 OAuth 验证如何,Home API 都会强制限制可以向您的应用授予权限的用户人数,上限为 100 人。完成Developer Console注册后,此限制将被解除。

  • Developer Console 注册 应 在您准备好通过 OAuth 限制设备类型授权 以准备使用 Home API 更新应用时发送以供审批。

对于仍在等待 OAuth 验证的 Google Cloud 应用, 用户在验证完成之前无法完成 OAuth 流程。尝试授予权限将会失败,并显示以下错误:

Access blocked: <Project Name> has not completed the Google verification process.