Node.js 版快速入门

创建一个向 Directory API 发出请求的 Node.js 命令行应用。

快速入门介绍了如何设置和运行调用 Google Workspace API 的应用。本快速入门使用一种简化的身份验证方法,该方法适用于测试环境。对于生产环境,我们建议您先了解身份验证和授权,然后再选择适合您应用的访问凭据。

本快速入门使用 Google Workspace 推荐的 API 客户端库来处理身份验证和授权流程的一些细节。

目标

  • 设置环境。
  • 安装客户端库。
  • 设置示例。
  • 运行示例。

前提条件

如需运行本快速入门,您需要满足以下前提条件:

  • 已启用 API 访问权限的 Google Workspace 网域。
  • 相应网域中具有管理员权限的 Google 账号。

设置环境

如需完成本快速入门,请设置您的环境。

启用 API

在使用 Google API 之前,您需要在 Google Cloud 项目中启用它们。 您可以在单个 Google Cloud 项目中启用一个或多个 API。
  • 在 Google Cloud 控制台中,启用 Directory API。

    启用 API

如果您要使用新的 Google Cloud 云项目完成本快速入门,请配置 OAuth 权限请求页面。如果您已为 Cloud 项目完成此步骤,请跳至下一部分。

  1. 在 Google API 控制台中,依次前往菜单 > Google Auth 平台 > 品牌推广。

    前往“品牌塑造”

  2. 如果您已配置 Google Auth 平台,则可以在品牌推广、受众群体和数据访问中配置以下 OAuth 同意屏幕设置。如果您看到一条消息,提示尚未配置 Google Auth 平台,请点击开始使用:
    1. 在应用信息下的应用名称中,输入应用的名称。
    2. 在用户支持邮箱中,选择一个支持电子邮件地址,以便用户在对自己的同意情况有疑问时与您联系。
    3. 点击下一步。
    4. 在受众群体下,选择内部。
    5. 点击下一步。
    6. 在联系信息下,输入一个电子邮件地址,以便您接收有关项目变更的通知。
    7. 点击下一步。
    8. 在完成部分,查看 Google API 服务用户数据政策,如果您同意该政策,请选择我同意 Google API 服务:用户数据政策。
    9. 点击继续。
    10. 点击创建。
  3. 目前,您可以跳过添加范围的步骤。 未来,如果您创建的应用供 Google Workspace 组织以外的用户使用,则必须将用户类型更改为外部。然后,添加应用所需的授权范围。如需了解详情,请参阅完整的配置 OAuth 同意指南。

为桌面应用授权凭据

如需对最终用户进行身份验证并访问应用中的用户数据,您需要创建一个或多个 OAuth 2.0 客户端 ID。客户端 ID 用于向 Google 的 OAuth 服务器标识单个应用。如果您的应用在多个平台上运行,您必须为每个平台分别创建客户端 ID。
  1. 在 Google Cloud 控制台中,依次前往菜单 > Google Auth 平台 > 客户端。

    前往“客户”页面

  2. 点击创建客户端。
  3. 依次点击应用类型 > 桌面应用。
  4. 在名称字段中,输入凭据的名称。此名称仅在 Google Cloud 控制台中显示。
  5. 点击创建。

    新创建的凭证会显示在“OAuth 2.0 客户端 ID”下。

  6. 将下载的 JSON 文件另存为 credentials.json,然后将该文件移动到您的工作目录。

安装客户端库

  • 使用 npm 安装库:

    npm install googleapis@105 @google-cloud/local-auth@2.1.0 --save
    

设置示例

  1. 在工作目录中,创建一个名为 index.js 的文件。

  2. 在文件中,粘贴以下代码:

    adminSDK/directory/index.js
    import path from 'node:path';
    import process from 'node:process';
    import {authenticate} from '@google-cloud/local-auth';
    import {google} from 'googleapis';
    
    // The scope for the Admin SDK Directory API.
    const SCOPES = ['https://www.googleapis.com/auth/admin.directory.user'];
    // The path to the credentials file.
    const CREDENTIALS_PATH = path.join(process.cwd(), 'credentials.json');
    
    /**
     * Lists the first 10 users in the domain.
     */
    async function listUsers() {
      // Authenticate with Google and get an authorized client.
      const auth = await authenticate({
        scopes: SCOPES,
        keyfilePath: CREDENTIALS_PATH,
      });
    
      // Create a new Admin SDK Directory API client.
      const service = google.admin({version: 'directory_v1', auth});
      // Get the list of users.
      const result = await service.users.list({
        customer: 'my_customer',
        maxResults: 10,
        orderBy: 'email',
      });
    
      const users = result.data.users;
      if (!users || users.length === 0) {
        console.log('No users found.');
        return;
      }
    
      // Print the primary email and full name of each user.
      console.log('Users:');
      users.forEach((user) => {
        console.log(`${user.primaryEmail} (${user.name?.fullName})`);
      });
    }
    
    await listUsers();

运行示例

  1. 在工作目录中,运行示例:

    node .
    
  1. 首次运行该示例时,系统会提示您授权访问:
    1. 如果您尚未登录 Google 账号,请在系统提示时登录。如果您已登录多个账号,请选择一个账号用于授权。
    2. 点击接受。

    您的 Nodejs 应用运行并调用 Directory API。

    授权信息存储在文件系统中,因此下次运行示例代码时,系统不会提示您进行授权。

后续步骤