このガイドでは、ユーザーの Google 認証情報で OAuth 2.0 を使用して Chat API にアクセスする方法について説明します。ユーザー認証情報を使用して認証と承認を行うと、Chat アプリはユーザーデータにアクセスし、認証されたユーザーの代わりにオペレーションを実行できます。ユーザーに代わって認証を行うことで、アプリはそのユーザーと同じ権限を持ち、そのユーザーが実行したかのようにアクションを実行できます。
ユーザーの認証情報を使用して API 呼び出しを認証して承認した後、Chat アプリは次のことができます。
- Chat スペースを作成する。
- Chat のスペースとグループの会話にユーザーを追加する。
- 次のような他の Workspace API でユーザーデータを使用する。
アプリがユーザー認証でアクション(スペースの作成など)を実行すると、Google Chat に帰属メッセージが表示され、そのアクションを承認したユーザーに代わってアクションを実行したアプリの名前がユーザーに伝えられます。
Chat アプリで認証が必要な場合と、使用する認証の種類について詳しくは、Chat API の認証と承認の概要の必要な認証の種類をご覧ください。
Google Workspace 管理者として認証と承認を行う
このセクションでは、Google Workspace ワークスペース管理者がユーザー認証を使用して組織全体の Google Chat アプリとスペースを管理する方法について説明します。
ドメイン全体の委任を使用して認証と承認を行う
ドメイン管理者は、ドメイン全体の権限委任を付与して、ユーザーごとに同意を求めることなく、アプリケーションのサービス アカウントがユーザーのデータにアクセスすることを承認できます。ドメイン全体の委任を構成すると、サービス アカウントはユーザー アカウントの権限借用が可能になります。認証にはサービス アカウントが使用されますが、ドメイン全体の委任ではユーザーになりすますため、ユーザー認証と見なされます。ユーザー認証が必要な機能には、ドメイン全体の委任を使用できます。
管理者権限を使用して認証と承認を行う
ドメイン管理者または管理者権限を持つ委任管理者である場合は、該当するメソッドのリクエストで useAdminAccess
フィールドを設定して、管理者権限で Google Chat API の呼び出しを認証および承認できます。詳細については、API リファレンス ドキュメントをご覧ください。
Google Chat アプリが管理者権限で操作を実行した場合、Chat は、その操作を実行した Chat アプリの名前や、その操作を承認した管理者の名前をユーザーに通知しません。組織の管理者によって操作が実行されたことをユーザーに通知するだけです。
前提条件
Java
- Google Chat へのアクセス権を持つビジネスまたはエンタープライズ向け Google Workspace アカウント。
- Google Cloud プロジェクトを作成します。
- Google Chat API を有効にして構成し、Chat アプリの名前、アイコン、説明を指定します。
- JDK 1.7 以降
- Maven パッケージ管理ツール
-
初期化された Maven プロジェクト。新しいプロジェクトを初期化するには、コマンドライン インターフェースで次のコマンドを実行します。
mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Python
- Google Chat へのアクセス権を持つビジネスまたはエンタープライズ向け Google Workspace アカウント。
- Google Cloud プロジェクトを作成します。
- Google Chat API を有効にして構成し、Chat アプリの名前、アイコン、説明を指定します。
- Python 3.6 以降
- pip パッケージ管理ツール
Node.js
- Google Chat へのアクセス権を持つビジネスまたはエンタープライズ向け Google Workspace アカウント。
- Google Cloud プロジェクトを作成します。
- Google Chat API を有効にして構成し、Chat アプリの名前、アイコン、説明を指定します。
- Node.js 14 以降
- npm パッケージ管理ツール
-
初期化された Node.js プロジェクト。新しいプロジェクトを初期化するには、新しいフォルダを作成してそのフォルダに移動し、コマンドライン インターフェースで次のコマンドを実行します。
npm init
Apps Script
- Google Chat へのアクセス権を持つビジネスまたはエンタープライズ向け Google Workspace アカウント。
- Google Cloud プロジェクトを作成します。
- Google Chat API を有効にして構成し、Chat アプリの名前、アイコン、説明を指定します。
- スタンドアロンの Apps Script プロジェクトを作成し、Advanced Chat Service を有効にします。
ステップ 1: OAuth 同意画面を設定し、スコープを指定してアプリを登録する
OAuth 2.0 を使用して承認を行うと、プロジェクトの概要、ポリシー、リクエストされた認可スコープなどを含む同意画面がユーザーに表示されます。アプリの OAuth 同意画面を構成すると、ユーザーとアプリの審査担当者に表示される内容が定義され、後でアプリを公開できるようにアプリが登録されます。
OAuth 2.0 を使用するすべてのアプリで同意画面の設定が必要ですが、リストに含める必要があるのは、Google Workspace 組織外のユーザーが使用するアプリのスコープのみです。
Google Cloud コンソールで、メニュー > [API とサービス] > [OAuth 同意画面] に移動します。
アプリのユーザータイプを選択し、[作成] をクリックします。
アプリ登録フォームに入力し、[保存して続行] をクリックします。
[スコープを追加または削除] をクリックします。アプリに必要な認可スコープを追加して確認し、[更新]、[保存して次へ] の順にクリックします。
アプリ登録の概要を確認します。[編集] をクリックして変更するか、[ダッシュボードに戻る] をクリックします。
ステップ 2: Google Cloud コンソールで OAuth クライアント ID 認証情報を作成する
エンドユーザーとして認証を行い、アプリ内でユーザーデータにアクセスするには、1 つ以上の OAuth 2.0 クライアント ID を作成する必要があります。クライアント ID は、Google の OAuth サーバーで個々のアプリを識別するために使用します。アプリが複数のプラットフォーム(Android、iOS、ウェブなど)で実行される場合は、プラットフォームごとに個別のクライアント ID を作成する必要があります。
OAuth クライアント ID 認証情報を作成する
OAuth クライアント ID の作成方法については、アプリケーションの種類を選択してください。
ウェブ アプリケーション
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [ウェブ アプリケーション] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- アプリに関連する承認済み URI を追加します。
- クライアントサイド アプリ(JavaScript) - [承認済みの JavaScript 生成元] で [URI を追加] をクリックします。次に、ブラウザ リクエストに使用する URI を入力します。これにより、アプリケーションが OAuth 2.0 サーバーに API リクエストを送信できるドメインが識別されます。
- サーバーサイド アプリ(Java、Python など) - [承認済みのリダイレクト URI] で [URI を追加] をクリックします。次に、OAuth 2.0 サーバーがレスポンスを送信するエンドポイント URI を入力します。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
クライアント ID をメモします。クライアント シークレットはウェブ アプリケーションでは使用されません。
- [OK] をクリックします。新しく作成された認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
Android
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [Android] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [パッケージ名] フィールドに、
AndroidManifest.xml
ファイルのパッケージ名を入力します。 - [SHA-1 証明書のフィンガープリント] フィールドに、生成した SHA-1 証明書のフィンガープリントを入力します。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID が表示されます。
- [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
iOS
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [iOS] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [バンドル ID] フィールドに、アプリの
Info.plist
ファイルに記載されているバンドル識別子を入力します。 - 省略可: アプリが Apple App Store に掲載されている場合は、App Store ID を入力します。
- 省略可: [チーム ID] フィールドに、Apple によって生成され、チームに割り当てられている、10 文字からなる固有の文字列を入力します。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
- [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
Chrome アプリ
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [Chrome アプリ] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [アプリケーション ID] フィールドに、アプリの一意の 32 文字の ID 文字列を入力します。この ID 値は、アプリの Chrome ウェブストアの URL と Chrome ウェブストア デベロッパー ダッシュボードで確認できます。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
- [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
デスクトップ アプリ
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [デスクトップ アプリ] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
- [OK] をクリックします。新しく作成された認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
テレビと入力が限られたデバイス
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [テレビと限定入力デバイス] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
- [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
ユニバーサル Windows プラットフォーム(UWP)
- Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- [アプリケーションの種類] > [ユニバーサル Windows プラットフォーム(UWP)] をクリックします。
- [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
- [ストア ID] フィールドに、アプリの一意の 12 文字の Microsoft ストア ID 値を入力します。この ID は、アプリの Microsoft Store の URL と パートナー センターで確認できます。
- [作成] をクリックします。[OAuth クライアントを作成しました] 画面が表示され、新しいクライアント ID とクライアント シークレットが表示されます。
- [OK] をクリックします。新しく作成した認証情報が [OAuth 2.0 クライアント ID] の下に表示されます。
クライアント シークレット JSON ファイルをダウンロードする
クライアント シークレット ファイルは、認証情報を提供する際に Chat アプリが参照できる OAuth クライアント ID 認証情報の JSON 表現です。
Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
[OAuth 2.0 クライアント ID] で、作成したクライアント ID をクリックします。
[JSON をダウンロード] をクリックします。
ファイルを
client_secrets.json
として保存します。
ステップ 3: Google クライアント ライブラリとその他の依存関係をインストールする
Google クライアント ライブラリと、プロジェクトに必要なその他の依存関係をインストールします。
Java
Google クライアント ライブラリとその他の必要な依存関係を Maven プロジェクトに追加するには、プロジェクトのディレクトリにある pom.xml
ファイルを編集して、次の依存関係を追加します。
<dependencies>
<!-- ... existing dependencies ... -->
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-chat</artifactId>
<version>v1-rev20230905-2.0.0</version>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
<version>1.19.0</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.34.1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
</dependencies>
Python
Python 用の Google クライアント ライブラリをまだインストールしていない場合は、コマンドライン インターフェースで次のコマンドを実行します。
pip3 install --upgrade google-api-python-client google-auth-oauthlib
Node.js
Google クライアント ライブラリとその他の必要な依存関係を Node.js プロジェクトに追加するには、プロジェクトのディレクトリに切り替え、コマンドライン インターフェースで次のコマンドを実行します。
npm install "@googleapis/chat" open server-destroy
Apps Script
このサンプルでは、高度なチャット サービスを使用して Google Chat API を呼び出します。Apps Script プロジェクトでサービスを有効にするには:
- 左側の [エディタ] をクリックします。
- 左側の [サービス] の横にある [サービスを追加] をクリックします。
- [Google Chat API] を選択します。
- [バージョン] で [v1] を選択します。
- [追加] をクリックします。
クライアント ライブラリでサポートされている任意の言語を使用できます。
ステップ 4: Chat API を呼び出すスクリプトを作成する
OAuth 認可を使用して API を呼び出すには、複数のステップが必要です。ウェブ アプリケーションまたはデスクトップ アプリケーションでは、通常、プロセスは次のとおりです。
- アプリは、認可スコープで指定されたユーザーデータへのアクセスをリクエストする認可ページにユーザーを誘導します。アプリはクライアント ID 認証情報で自身を識別します。
- ユーザーは、アプリからリクエストされた権限を確認し、リクエストを承認します。
- Google の認証サーバーは、認可コードとともにブラウザをアプリの HTTP エンドポイントにリダイレクトします。
- アプリケーションは、認証コードをアクセス トークンと交換するために、Google の認証サーバーに別のリクエストを送信します。
- アプリケーションがアクセス トークンを使用して、ユーザーに代わって API を呼び出す。
OAuth 認可プロセスの詳細については、OAuth 2.0 を使用した Google API へのアクセスガイドをご覧ください。
Java、Python、Node.js の次のコードサンプルでは、クライアント ライブラリを使用して OAuth 認可フローを実行します。ローカル HTTP サーバーを起動して認証サーバーから認証コードを受け取ると、その認証コードをアクセス トークンと交換します。Apps Script コードサンプルでは、この認可フローは Apps Script によって処理されます。
認証フローが完了すると、スクリプトはユーザーのアクセス トークンを使用して Chat API で認証し、スペースを作成します。
Java
- プロジェクトのディレクトリで、
src/main/java/com/google/chat/app/authsample/App.java
ファイルを開きます。 App.java
の内容を次のコードに置き換えます。package com.google.chat.app.authsample; import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.gson.GsonFactory; import com.google.api.client.util.store.FileDataStoreFactory; import com.google.api.services.chat.v1.HangoutsChat; import com.google.api.services.chat.v1.model.Space; import java.io.InputStreamReader; import java.util.Collection; import java.util.Collections; /** * Authenticates with Chat API via user credentials, then creates a Chat space. */ public class App { // Application OAuth credentials. private static final String KEYS_RESOURCE_URI = "/client_secrets.json"; // Define your app's authorization scopes. private static final Collection<String> SCOPES = Collections.singleton("https://www.googleapis.com/auth/chat.spaces.create"); // Directory to store user credentials. private static final java.io.File DATA_STORE_DIR = new java.io.File(System.getProperty("user.home"), ".store/auth-sample-app"); // Global instance of the JSON factory. private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); // Global instance of the HTTP transport. private static HttpTransport httpTransport; // Global instance of the DataStoreFactory. The best practice is to make it a single // globally shared instance across your application. private static FileDataStoreFactory dataStoreFactory; public static void main( String[] args ) { try { // Run app. httpTransport = GoogleNetHttpTransport.newTrustedTransport(); dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR); Credential userCredential = authorize(); Space response = App.createChatSpace(userCredential); // Print details about the created space. System.out.println(response); } catch (Exception e) { e.printStackTrace(); } } /** * Authorizes the installed application to access user's protected data. */ private static Credential authorize() throws Exception { // Load client secrets. GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(App.class.getResourceAsStream("/client_secrets.json"))); // Set up authorization code flow. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( httpTransport, JSON_FACTORY, clientSecrets, SCOPES) .setDataStoreFactory(dataStoreFactory) .build(); // Authorize. return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); } /** * Creates a Chat space. */ private static Space createChatSpace(Credential userCredential) throws Exception { // Build the Chat API client and authenticate with the user account. HangoutsChat chatService = new HangoutsChat.Builder( httpTransport, JSON_FACTORY, userCredential) .setApplicationName("auth-sample-app") .build(); // Create a Chat space. Space space = new Space() // To create a named space, set spaceType to SPACE. .setSpaceType("SPACE") // The user-visible name of the space. .setDisplayName("API-made"); return chatService.spaces().create(space).execute(); } }
プロジェクトのディレクトリ内に
resources
という名前の新しいサブディレクトリを作成します。client_secrets.json
ファイルをresources
サブディレクトリにコピーします。クライアント シークレット ファイルをプロジェクト パッケージに含めるように Maven を構成するには、プロジェクトのディレクトリにある
pom.xml
ファイルを編集し、<build>
セクションに次の構成を追加します。<build> <!-- ... existing configurations ... --> <resources> <resource> <directory>resources</directory> </resource> </resources> </build>
プロジェクト パッケージに依存関係を含めてアプリケーションのメインクラスを実行するように Maven を構成するには、プロジェクトのディレクトリにある
pom.xml
ファイルを編集し、<plugins>
セクションに次の構成を追加します。<plugins> <!-- ... existing configurations ... --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.google.chat.app.authsample.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins>
Python
次のコードを、
client_secrets.json
が格納されているディレクトリのchat_space_create_named.py
という名前のファイルに保存します。from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"] def main(): ''' Authenticates with Chat API via user credentials, then creates a Chat space. ''' flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. service = build('chat', 'v1', credentials=creds) # Use the service endpoint to call Chat API. result = service.spaces().create( # Details about the space to create. body = { # To create a named space, set spaceType to SPACE. 'spaceType': 'SPACE', # The user-visible name of the space. 'displayName': 'API-made' } ).execute() # Prints details about the created space. print(result) if __name__ == '__main__': main()
Node.js
次のコードを、Node.js プロジェクトと
client_secrets.json
が格納されているディレクトリのchat_space_create_named.js
という名前のファイルに保存します。const fs = require('fs'); const path = require('path'); const http = require('http'); const url = require('url'); const destroyer = require('server-destroy'); const chat = require('@googleapis/chat'); // Application OAuth credentials. const keys = require('./client_secrets.json').installed; // Define your app's authorization scopes. // When modifying these scopes, delete the file token.json, if it exists. const scopes = ["https://www.googleapis.com/auth/chat.spaces.create"]; // Create a new OAuth2 client with the configured keys. const oauth2Client = new chat.auth.OAuth2( keys.client_id, keys.client_secret, 'http://localhost:3000' ); /** * Opens an HTTP server to accept the OAuth callback. * In this simple example, the only request to our webserver is to /?code=<code>. */ async function authenticate(scopes) { const opn = (await import('open')).default; return new Promise((resolve, reject) => { // Generate the URL for authorization. const authorizeUrl = oauth2Client.generateAuthUrl({ access_type: 'offline', scope: scopes.join(' '), }); // Start the HTTP server to listen for the callback. const server = http .createServer(async (req, res) => { try { const qs = new url.URL(req.url, 'http://localhost:3000').searchParams; res.end('Authentication successful! Please return to the console.'); server.destroy(); const { tokens } = await oauth2Client.getToken(qs.get('code')); oauth2Client.credentials = tokens; resolve(oauth2Client); } catch (e) { reject(e); } }) .listen(3000, () => { // Open the browser to the authorize URL to start the workflow. opn(authorizeUrl, { wait: false }).then(cp => cp.unref()); }); destroyer(server); }); } /** * Authenticates with Chat API via user credentials, then creates a Chat space. */ async function createSpace() { // Create the Chat API client and authenticate with the authorized user. const chatClient = await chat.chat({ version: 'v1', auth: oauth2Client }); // Call the Chat API to create a space. const result = await chatClient.spaces.create({ // Details about the space to create. requestBody: { // To create a named space, set spaceType to SPACE. 'spaceType': 'SPACE', // The user-visible name of the space. 'displayName': 'API-made' } }); return result; } // Authenticate the user, execute the function, // then print details about the created space. authenticate(scopes) .then(createSpace) .then(console.log);
Apps Script
Apps Script エディタで
appsscript.json
ファイルを編集し、API の呼び出しに必要な OAuth スコープを追加します。"oauthScopes": [ "https://www.googleapis.com/auth/chat.spaces.create" ]
次のコードを Apps Script プロジェクトの
ChatSpaceCreateNamed.gs
という名前のファイルに保存します。/** * Authenticates with Chat API via user credentials, then creates a * Chat space. */ function createSpace() { try { // Details about the space to create. // To create a named space, set spaceType to SPACE. // The user-visible name of the space is displayName. const space = {'displayName': 'API-made', 'spaceType': 'SPACE'}; // Call Chat API with user credentials to create the space. const result = Chat.Spaces.create(space); // Log details about the created space. console.log(result); } catch (err) { // TODO (developer) - Handle exception console.log('Failed to create space with error %s', err.message); } }
ステップ 5: サンプル スクリプトを実行する
サンプルを実行するには、コマンドラインからプロジェクト ファイルが格納されているディレクトリに移動し、次のコマンドを実行します。
Java
mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar
Python
python3 chat_space_create_named.py
Node.js
node chat_space_create_named.js
Apps Script
Apps Script エディタで ChatSpaceCreateNamed.gs
ファイルを開き、[実行] をクリックします。
ブラウザが開き、Google アカウントにログインするよう求められます。
ログインすると、OAuth 同意画面が表示され、アプリに権限を付与するよう求められます。
権限を付与すると、スクリプトは Chat API を呼び出します。これにより、表示名 API-made
の Chat スペースが作成されます。コンソールに API 呼び出しの詳細が印刷されます。スペースを確認するには、Google Chat の [スペース] パネルに移動します。
サンプルのトラブルシューティング
chat_space_create_named.py
の実行時に、次のようなエラーが表示されることがあります。
Expected a JSON object with a single property for a "web" or "installed" application
このエラー メッセージは、Google Cloud コンソールからダウンロードした client_secrets.json
ファイルが "web"
プロパティまたは "installed"
プロパティで始まっていないことを意味します。ダウンロードしたファイルで認証した後、コードがアクセス トークンを token.json
などの新しいファイルに保存しない場合、アクセス トークンは client_secrets.json
に書き込まれます。これにより、その後の承認の試行中にこのエラーが発生する可能性があります。
このエラーを解決するには、Google Cloud コンソールからクライアント シークレット ファイルを再度ダウンロードし、新しいファイルを現在のファイルの場所に保存します。
関連トピック
アプリケーションで単一フローの範囲外でユーザー トークンを継続的に使用する必要がある場合は、トークンを保存して後で再利用できます。この場合、アプリはユーザー トークンを安全に処理し、リフレッシュ トークンの取り消しと有効期限を処理する必要があります。詳細については、OAuth 2.0 の使用に関するベスト プラクティス ガイドをご覧ください。
Chat API のその他の機能については、Chat API リファレンス ドキュメントをご覧ください。