应用会授权调用零触摸注册客户 API 使用OAuth本文档介绍了 API 对 企业移动管理 (EMM) 提供商和企业 IT 开发者。 阅读本文档后,您将了解如何在应用中授权 API 请求,以及如何向应用用户说明账号要求。
授权快速入门
- 如需使用零触式注册 API 和 OAuth 客户端密钥设置 Google Cloud Platform 项目,请运行此向导。
- 构建适用于 Java、.NET 或 Python。利用 Google 的 API 客户端库支持其他 语言。
概览
- 一位或多位 IT 管理员是零触摸注册客户账号中的用户。
- IT 管理员会使用 Google 账号对自己进行身份验证。
- 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 请求,应用的用户需要执行以下操作:
- 将 Google 账号与其电子邮件地址相关联。
- 使用同一电子邮件地址加入客户账号。
- 接受“零触摸注册”客户服务条款 (ToS)。
要帮助应用用户进行设置,请重复使用获取 已启动并关联 Google 账号 。
用户管理
IT 管理员通过零触摸方式为其客户账号管理用户 注册门户。客户账号中用户的角色是 所有者或管理员。这两个角色对客户 API 具有相同的访问权限,但 所有者可以管理其他用户。
接受服务条款
应用用户需要先接受最新的 API 调用,然后才能授权 API 调用
服务条款当 IT 管理员首次使用零触摸注册时,或当我们
更新服务条款。如果用户尚未接受最新的服务条款,该 API 会返回
HTTP 403 Forbidden
状态代码,并且响应正文包含
TosError
。
该门户会在用户登录时自动提示用户接受最新的服务条款 位置如需查看您的应用可以采用的建议做法,请参阅 EMM 集成指南中的处理服务条款。
向您的应用添加授权
您的应用向客户 API 发送的每个请求都必须包含授权 令牌。Google 也可通过此令牌识别您的应用。由于 访问用户数据时,必须由 数据。您的应用会使用 OAuth 2.0 将 API 授权委托给 IT 管理员 协议。
操作说明
我们提供了 Java、.NET 和 Python 应用的快速入门指南。如果您使用的是其他语言,请按照下面的 按照以下步骤为您的广告联盟设置授权 应用。
要了解有关授权的详情,请参阅使用 OAuth 2.0 访问 Google API。
授权范围
使用 API 授权范围
在应用的 https://www.googleapis.com/auth/androidworkzerotouchemm
中请求
OAuth 2.0 访问令牌
范围参数用于控制访问令牌允许调用的资源和操作集。访问令牌仅对一组操作有效 令牌请求范围内描述的资源。该 API 涵盖 显示了单一零触摸注册范围的方法和资源 。
如需查看与 Google API 客户端库搭配使用的零触摸注册范围示例,请参阅 Java、.NET 和 Python 的快速入门。要详细了解如何使用 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 密钥或任何其他私钥 。