Node.js のクイックスタート

Google Chat API にリクエストを送信する Node.js コマンドライン アプリケーションを作成します。

クイックスタートでは、Google Workspace API を呼び出すアプリを設定して実行する方法について説明します。このクイックスタートでは、テスト環境に適した簡略化された認証方法を使用します。本番環境では、アプリに適したアクセス認証情報を選択する前に、認証と認可について学習することをおすすめします。

このクイックスタートでは、Google Workspace の推奨 API クライアント ライブラリを使用して、認証および承認フローの詳細の一部を処理します。

目標

  • 環境をセットアップする。
  • クライアント ライブラリをインストールする。
  • サンプルを設定します。
  • サンプルを実行します。

前提条件

このクイックスタートを実行するには、次の前提条件を満たしている必要があります。

環境の設定

このクイックスタートを完了するには、環境を設定します。

API を有効にする

Google API を使用する前に、Google Cloud プロジェクトで API を有効にする必要があります。1 つの Google Cloud プロジェクトで 1 つ以上の API を有効にできます。
  • Google Cloud コンソールで、Google Chat API を有効にします。

    API の有効化

このクイックスタートを新しい Google Cloud プロジェクトを使用して完了する場合は、OAuth 同意画面を構成します。Cloud プロジェクトでこの手順をすでに完了している場合は、次のセクションに進んでください。

  1. Google Cloud コンソールで、メニュー > > [ブランディング] に移動します。

    [ブランディング] に移動

  2. をすでに構成している場合は、[ブランディング]、[対象ユーザー]、[データアクセス] で次の OAuth 同意画面の設定を構成できます。[ まだ設定されていません] というメッセージが表示された場合は、[使ってみる] をクリックします。
    1. [アプリ情報] の [アプリ名] に、アプリの名前を入力します。
    2. [ユーザー サポートメール] で、ユーザーが同意について問い合わせる際に使用するサポートのメールアドレスを選択します。
    3. [続行] をクリックします。
    4. [対象] で [内部] を選択します。
    5. [続行] をクリックします。
    6. [連絡先情報] で、プロジェクトに対する変更の通知を受け取るメールアドレスを入力します。
    7. [続行] をクリックします。
    8. [完了] で、Google API サービスのユーザーデータに関するポリシーを確認し、同意する場合は [Google API サービス: ユーザーデータに関するポリシーに同意します] を選択します。
    9. [続行] をクリックします。
    10. [作成] をクリックします。
  3. 現時点では、スコープの追加はスキップできます。今後、Google Workspace 組織外で使用するアプリを作成する場合は、[ユーザータイプ] を [外部] に変更する必要があります。次に、アプリに必要な認可スコープを追加します。詳細については、OAuth 同意画面を構成するの完全なガイドをご覧ください。

デスクトップ アプリケーションの認証情報を承認する

エンドユーザーを認証してアプリ内でユーザーデータにアクセスするには、1 つ以上の OAuth 2.0 クライアント ID を作成する必要があります。クライアント ID は、Google の OAuth サーバーで個々のアプリを識別するために使用します。アプリが複数のプラットフォームで実行される場合は、プラットフォームごとに個別のクライアント ID を作成する必要があります。
  1. Google Cloud コンソールで、メニュー > > [クライアント] に移動します。

    [クライアント] に移動

  2. [Create Client] をクリックします。
  3. [アプリケーション タイプ] > [デスクトップ アプリ] をクリックします。
  4. [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
  5. [Create] をクリックします。

    新しく作成した認証情報は、[OAuth 2.0 クライアント ID] に表示されます。

  6. ダウンロードした JSON ファイルを credentials.json として保存し、作業ディレクトリに移動します。

Google Chat アプリを構成する

Google Chat API を呼び出すには、Google Chat 用アプリを構成する必要があります。書き込みリクエストの場合、Google Chat は次の情報を使用して UI で Google Chat 用アプリを属性付けします。

  1. Google Cloud コンソールで、Chat API の [構成] ページに移動します。

    Chat API の構成ページに移動

  2. [Application info] に次の情報を入力します。

    1. [アプリ名] フィールドに「Chat API quickstart app」と入力します。
    2. [アバターの URL] フィールドに「https://developers.google.com/chat/images/quickstart-app-avatar.png」と入力します。
    3. [説明] フィールドに「Quickstart for calling the Chat API」と入力します。
  3. [インタラクティブ機能] で、[インタラクティブ機能を有効にする] トグルをオフにして、Chat 用アプリのインタラクティブ機能を無効にします。

  4. [保存] をクリックします。

クライアント ライブラリをインストールする

  • npm を使用してライブラリをインストールします。

     npm install @google-apps/chat @google-cloud/[email protected] --save 

サンプルのセットアップ

  1. 作業ディレクトリに index.js という名前のファイルを作成します。

  2. ファイルに次のコードを貼り付けます。

    chat/quickstart/index.js
    const fs = require('fs').promises; const path = require('path'); const process = require('process'); const {authenticate} = require('@google-cloud/local-auth'); const {ChatServiceClient} = require('@google-apps/chat'); const {auth} = require('google-auth-library');  // If modifying these scopes, delete token.json. const SCOPES = ['https://www.googleapis.com/auth/chat.spaces.readonly'];  // 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.  *  * @return {Promise<OAuth2Client>}  */ 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; }  /**  * Lists spaces with user credential.  * @param {OAuth2Client} authClient An authorized OAuth2 client.  */ async function listSpaces(authClient) {   // Create a client   const chatClient = new ChatServiceClient({     authClient: authClient,     scopes: SCOPES,   });    // Initialize request argument(s)   const request = {     // Filter spaces by space type (SPACE or GROUP_CHAT or DIRECT_MESSAGE)     filter: 'space_type = "SPACE"'   };    // Make the request   const pageResult = chatClient.listSpacesAsync(request);    // Handle the response. Iterating over pageResult will yield results and   // resolve additional pages automatically.   for await (const response of pageResult) {     console.log(response);   } }  authorize().then(listSpaces).catch(console.error);

サンプルの実行

  1. 作業ディレクトリで、サンプルを実行します。

     node . 
  1. サンプルを初めて実行すると、アクセス権限の承認を求めるメッセージが表示されます。
    1. Google アカウントにまだログインしていない場合は、プロンプトが表示されたらログインします。複数のアカウントにログインしている場合は、承認に使用するアカウントを 1 つ選択します。
    2. [Accept] をクリックします。

    Nodejs アプリケーションが実行され、Google Chat API が呼び出されます。

    認可情報はファイル システムに保存されるため、次回サンプルコードを実行するときに認可を求められることはありません。

次のステップ