Node.js 版快速入门

快速入门介绍了如何设置和运行调用 Google Workspace API 的应用。

Google Workspace 快速入门使用 API 客户端库来处理一些 身份验证和授权流程的详细信息。我们建议 您需要为自己的应用使用客户端库本快速入门使用适合测试环境的简化身份验证方法。对于生产环境,我们建议您了解 身份验证和授权 早于 选择访问凭据 适合您应用的广告格式

创建一个向 Google Meet API。

目标

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

前提条件

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

  • 拥有启用了 Google Meet 的 Google Workspace 账号。

设置环境

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

启用 API

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

    启用 API

如果您使用新的 Google Cloud 项目来完成本快速入门,请配置 OAuth 权限请求页面,并将您自己添加为测试用户。如果您已经 已完成此步骤,请跳到下一部分。

  1. 在 Google Cloud 控制台中,点击“菜单”图标 > API 和服务 > OAuth 同意屏幕

    转到 OAuth 同意屏幕

  2. 用户类型字段中,选择内部,然后点击创建
  3. 填写应用注册表单,然后点击保存并继续
  4. 现在,您可以跳过添加范围,然后点击保存并继续。 今后,如果您创建的应用要在 Google Workspace 组织之外使用,则必须将用户类型更改为外部,然后添加应用所需的授权范围。

  5. 查看应用注册摘要。如需进行更改,请点击修改。如果应用注册未出现任何问题,请点击返回信息中心

为桌面应用授权凭据

如需对最终用户进行身份验证并访问应用中的用户数据,您需要执行以下操作: 创建一个或多个 OAuth 2.0 客户端 ID。客户端 ID 用于标识 连接到 Google OAuth 服务器。如果您的应用在多个平台上运行 您必须为每个平台创建一个单独的客户端 ID。
  1. 在 Google Cloud 控制台中,依次点击“菜单”图标 > API 和服务 > 凭据

    进入“凭据”页面

  2. 依次点击创建凭据 > OAuth 客户端 ID
  3. 依次点击应用类型 > 桌面应用
  4. 名称字段中,输入凭据的名称。此名称仅在 Google Cloud 控制台中显示。
  5. 点击创建。系统会显示“OAuth 客户端创建”屏幕,其中显示了您的新客户端 ID 和客户端密钥。
  6. 点击 OK。新创建的凭据会显示在 OAuth 2.0 客户端 ID 下。
  7. 将下载的 JSON 文件保存为 credentials.json,并将 复制到您的工作目录中。

安装客户端库

  • 使用 npm 安装库:

    npm install @google-apps/meet @google-cloud/local-auth@2.1.0 --save
    

设置示例

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

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

    meet/quickstart/index.js
    const fs = require('fs').promises;
    const path = require('path');
    const process = require('process');
    const {authenticate} = require('@google-cloud/local-auth');
    const {SpacesServiceClient} = require('@google-apps/meet').v2;
    const { auth } = require('google-auth-library');
    
    // If modifying these scopes, delete token.json.
    const SCOPES = ['https://www.googleapis.com/auth/meetings.space.created'];
    
    // The file token.json stores the user's access and refresh tokens, and is
    // created automatically when the authorization flow completes for the first
    // time.
    const TOKEN_PATH = path.join(process.cwd(), 'token.json');
    const CREDENTIALS_PATH = path.join(process.cwd(), 'credentials.json');
    
    /**
     * Reads previously authorized credentials from the save file.
     *
     * @return {Promise<OAuth2Client|null>}
     */
    async function loadSavedCredentialsIfExist() {
      try {
        const content = await fs.readFile(TOKEN_PATH);
        const credentials = JSON.parse(content);
        return auth.fromJSON(credentials);
      } catch (err) {
        console.log(err);
        return null;
      }
    }
    
    /**
     * Serializes credentials to a file compatible with GoogleAuth.fromJSON.
     *
     * @param {OAuth2Client} client
     * @return {Promise<void>}
     */
    async function saveCredentials(client) {
      const content = await fs.readFile(CREDENTIALS_PATH);
      const keys = JSON.parse(content);
      const key = keys.installed || keys.web;
      const payload = JSON.stringify({
        type: 'authorized_user',
        client_id: key.client_id,
        client_secret: key.client_secret,
        refresh_token: client.credentials.refresh_token,
      });
      await fs.writeFile(TOKEN_PATH, payload);
    }
    
    /**
     * Load or request or authorization to call APIs.
     *
     */
    async function authorize() {
      let client = await loadSavedCredentialsIfExist();
      if (client) {
        return client;
      }
      client = await authenticate({
        scopes: SCOPES,
        keyfilePath: CREDENTIALS_PATH,
      });
      if (client.credentials) {
        await saveCredentials(client);
      }
      return client;
    }
    
    /**
     * Creates a new meeting space.
     * @param {OAuth2Client} authClient An authorized OAuth2 client.
     */
    async function createSpace(authClient) {
      const meetClient = new SpacesServiceClient({
        authClient: authClient
      });
      // Construct request
      const request = {
      };
    
      // Run request
      const response = await meetClient.createSpace(request);
      console.log(`Meet URL: ${response[0].meetingUri}`);
    }
    
    authorize().then(createSpace).catch(console.error);

运行示例

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

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

    您的 Nodejs 应用运行并调用 Google Meet API。

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

后续步骤