授权

应用会授权调用零触摸注册客户 API 使用OAuth本文档介绍了 API 对 企业移动管理 (EMM) 提供商和企业 IT 开发者。 阅读本文档后,您将了解如何在应用中授权 API 请求,以及如何向应用用户说明账号要求。

授权快速入门

  • 如需使用零触式注册 API 和 OAuth 客户端密钥设置 Google Cloud Platform 项目,请运行此向导
  • 构建适用于 Java.NETPython。利用 Google 的 API 客户端库支持其他 语言。

概览

设备和客户资源之间的关系

  1. 一位或多位 IT 管理员是零触摸注册客户账号中的用户。
  2. IT 管理员会使用 Google 账号对自己进行身份验证。
  3. API 请求会传递 OAuth2 令牌,以代表 IT 管理员。

客户账号

一个组织的配置、设备和(IT 管理员)用户属于 客户账号。客户账号类似于群组,而不是 单个用户当组织首次启用时,转销商会设置客户 购买设备以进行零触摸注册。IT 管理员使用零触摸注册门户管理其组织中的其他用户。

该 API 使用数字客户 ID 来标识账号。您传递客户 ID 。您的应用需要 客户 ID。

以下示例展示了如何获取 授权 API 调用:

Java

AndroidProvisioningPartner.Customers.List accountRequest = service.customers().list();
accountRequest.setPageSize(100);
CustomerListCustomersResponse accountResponse = accountRequest.execute();

List<Company> customers = accountResponse.getCustomers();
if (customers == null || customers.isEmpty()) {
    // No accounts found for the user. Confirm the Google Account
    // that authorizes the request can access the zero-touch portal.
    System.out.println("No zero-touch enrollment account found.");
} else {
    // Print the customers in this page.
    for (Company customer : customers) {
        System.out.format("%s\tcustomers/%d\n",
              customer.getCompanyName(), customer.getCompanyId());
    }
}

.NET

CustomersResource.ListRequest accountRequest = service.Customers.List();
accountRequest.PageSize = 100;
CustomerListCustomersResponse accountResponse = accountRequest.Execute();
IList<Company> customers = accountResponse.Customers ?? new List<Company>();
if (customers.Count == 0)
{
    // No accounts found for the user. Confirm the Google Account
    // that authorizes the request can access the zero-touch portal.
    Console.WriteLine("No zero-touch enrollment account found.");
}
foreach (Company customer in customers)
{
    Console.WriteLine("{0}\tcustomers/{1}",
                      customer.CompanyName,
                      customer.CompanyId);
}

Python

response = service.customers().list(pageSize=100).execute()
if 'customers' not in response:
  # No accounts found for the user. Confirm the Google Account
  # that authorizes the request can access the zero-touch portal.
  print('No zero-touch enrollment account found.')
  response['customers'] = []

for customer in response['customers']:
  print('{0}\tcustomers/{1}'.format(
      customer['companyName'], customer['companyId']))

在您的应用中,您需要浏览账号结果页,因为 上面的示例仅输出前 100 个账号。要了解如何执行上述操作,请参阅 分页结果

一个组织通常有一个客户账号,但较大型的组织 可以为每个部门使用不同的客户账号。因为 IT 管理员可以 属于不同客户账号的成员,则您的应用应帮助用户找到并 使用新客户账号。在您的应用中,使用 companyName 值。

用户

IT 管理员授权您的应用代表其发送的 API 请求。如需授权 API 请求,应用的用户需要执行以下操作:

  1. 将 Google 账号与其电子邮件地址相关联。
  2. 使用同一电子邮件地址加入客户账号。
  3. 接受“零触摸注册”客户服务条款 (ToS)。

要帮助应用用户进行设置,请重复使用获取 已启动关联 Google 账号

用户管理

IT 管理员通过零触摸方式为其客户账号管理用户 注册门户。客户账号中用户的角色是 所有者管理员。这两个角色对客户 API 具有相同的访问权限,但 所有者可以管理其他用户。

接受服务条款

应用用户需要先接受最新的 API 调用,然后才能授权 API 调用 服务条款当 IT 管理员首次使用零触摸注册时,或当我们 更新服务条款。如果用户尚未接受最新的服务条款,该 API 会返回 HTTP 403 Forbidden 状态代码,并且响应正文包含 TosError

该门户会在用户登录时自动提示用户接受最新的服务条款 位置如需查看您的应用可以采用的建议做法,请参阅 EMM 集成指南中的处理服务条款

向您的应用添加授权

您的应用向客户 API 发送的每个请求都必须包含授权 令牌。Google 也可通过此令牌识别您的应用。由于 访问用户数据时,必须由 数据。您的应用会使用 OAuth 2.0 将 API 授权委托给 IT 管理员 协议

操作说明

我们提供了 Java.NETPython 应用的快速入门指南。如果您使用的是其他语言,请按照下面的 按照以下步骤为您的广告联盟设置授权 应用。

要了解有关授权的详情,请参阅使用 OAuth 2.0 访问 Google API

授权范围

使用 API 授权范围 在应用的 https://www.googleapis.com/auth/androidworkzerotouchemm 中请求 OAuth 2.0 访问令牌

范围参数用于控制访问令牌允许调用的资源和操作集。访问令牌仅对一组操作有效 令牌请求范围内描述的资源。该 API 涵盖 显示了单一零触摸注册范围的方法和资源 。

如需查看与 Google API 客户端库搭配使用的零触摸注册范围示例,请参阅 Java.NETPython 的快速入门。要详细了解如何使用 Google API 作用域,请参阅使用 使用 OAuth 2.0 访问 Google API

API 密钥最佳实践

在您的应用中使用 API 密钥时,请注意确保 API 密钥的安全。 公开泄露凭据可能会导致您的账号遭到盗用,这可能会使您的账号产生意外费用。为保障 API 密钥的安全,请遵循以下最佳实践:

请勿直接在代码中嵌入 API 密钥
嵌入代码中的 API 密钥可能会被意外泄露给 例如,如果您忘记将密钥从之前创建的代码中移除 份额。您可以将 API 密钥存储在 环境变量或在应用来源之外的文件中 树。
不要将 API 密钥存储在应用源代码树内的文件中
如果您将 API 密钥存储在文件中,请将文件保存在应用的 源代码树,有助于确保您的密钥最终不会进入源代码控制 系统。如果您使用公开的源代码,则这一点尤为重要 例如 GitHub
将您的 API 密钥限制为仅供 IP 地址、引荐来源网址 以及需要它们的移动应用
通过限制 IP 地址、引荐来源网址和移动应用, 使用每个密钥,即可降低 API 密钥泄露造成的影响。您可以 从 Google API 控制台指定可以使用每个密钥的主机和应用 方法是打开“凭据”页面,然后创建一个新的 API 将密钥替换为所需的设置,或修改某个 API 的设置 键。
删除不需要的 API 密钥
为尽量避免遭到攻击,请删除您不知情的所有 API 密钥 。
定期重新生成 API 密钥
您可以在 Google API 控制台中重新生成 API 密钥,方法是打开 “凭据”页面,选择一个 API 密钥,然后点击重新生成 每个键。然后,更新您的应用以使用新生成的 键。旧密钥在生成后 24 小时内仍可使用 替换密钥。
公开发布代码前先检查代码
确保您的代码不包含 API 密钥或任何其他私钥 。