Z tego przewodnika dowiesz się, jak używać protokołu OAuth 2.0 z danymi logowania Google użytkowników, aby uzyskać dostęp do Chat API. Uwierzytelnianie i autoryzacja za pomocą danych logowania użytkownika pozwala aplikacjom do obsługi czatu uzyskiwać dostęp do danych użytkownika i wykonywać operacje w imieniu uwierzytelnionego użytkownika. Dzięki uwierzytelnianiu w imieniu użytkownika aplikacja ma takie same uprawnienia jak ten użytkownik i może wykonywać działania tak, jakby została wykonana przez tego użytkownika.
Po uwierzytelnieniu i autoryzacji wywołania interfejsu API z użyciem danych logowania użytkownika aplikacje do obsługi czatu mogą wykonywać te czynności:
- Tworzenie pokoi czatu.
- dodawać użytkowników do pokoi czatu i rozmów grupowych;
- pracować z danymi użytkowników w innych interfejsach Workspace API, takich jak:
- Twórz wydarzenia w Kalendarzu Google.
- Zarejestruj elementy w Arkuszach Google.
- Wyślij e-maila za pomocą Gmaila.
Gdy aplikacja wykonuje działanie wymagające uwierzytelnienia użytkownika (np. tworzy pokój), Google Chat wyświetla komunikat atrybucji informujący użytkowników o nazwie aplikacji, która wykonała działanie w imieniu użytkownika, który ją autoryzował.
Aby dowiedzieć się więcej o tym, kiedy aplikacje do obsługi czatu wymagają uwierzytelniania, i jakiego rodzaju uwierzytelnianie należy używać, przeczytaj sekcję Typy wymaganych uwierzytelniania w artykule omawiającym uwierzytelnianie i autoryzację przy użyciu interfejsu Chat API.
Uwierzytelnianie i autoryzacja przy użyciu przekazywania dostępu w całej domenie
Jeśli jesteś administratorem domeny, możesz przyznać przekazywanie uprawnień w całej domenie w celu autoryzowania konta usługi aplikacji na dostęp do danych użytkowników bez konieczności wyrażenia zgody przez każdego użytkownika. Gdy skonfigurujesz przekazywanie dostępu w całej domenie, konto usługi może przyjmować tożsamość konta użytkownika. Chociaż konto usługi służy do uwierzytelniania, przekazywanie dostępu w całej domenie podszywa się pod użytkownika i dlatego jest uznawane za uwierzytelnianie użytkownika. W przypadku wszystkich funkcji, które wymagają uwierzytelniania użytkowników, możesz korzystać z przekazywania dostępu w całej domenie.
Uwierzytelnianie i autoryzacja przy użyciu uprawnień administratora
Jeśli jesteś administratorem domeny lub administratorem delegowanym z uprawnieniami administratora, możesz uwierzytelniać i autoryzować wywołania interfejsu Google Chat API z uprawnieniami administratora, ustawiając pole use_admin_access
w żądaniach odpowiednich metod. Więcej informacji znajdziesz w dokumentacji referencyjnej interfejsu API.
Pamiętaj, że gdy aplikacja Google Chat wykona czynność z uprawnieniami administratora, nie poinformuje użytkowników o nazwie aplikacji do obsługi czatu, która je wykonała, ani nazwy administratora, który ją autoryzował. Będzie jednak informować użytkowników tylko o tym, że czynność została wykonana przez administratora ich organizacji.
Wymagania wstępne
Aby uruchomić przykład opisany w tym przewodniku, musisz spełnić te wymagania wstępne:
- konto Google Workspace z dostępem do Google Chat.
- Projekt Google Cloud z włączonym i skonfigurowanym interfejsem Chat API. Jeżeli chcesz utworzyć projekt i włączyć interfejs API, przeczytaj sekcję Tworzenie projektu i włączanie interfejsu API.
- aplikację do obsługi czatu skonfigurowaną na stronie konfiguracji interfejsu Chat API w konsoli Google Cloud, Informacje o tworzeniu i konfigurowaniu aplikacji Google Chat znajdziesz w artykule Tworzenie aplikacji Google Chat za pomocą Cloud Functions.
Musisz też spełniać te wymagania wstępne dotyczące poszczególnych języków:
Java
- JDK w wersji 1.7 lub nowszej
- Narzędzie do zarządzania pakietami Maven
Zainicjowany projekt Maven. Aby zainicjować nowy projekt, uruchom w interfejsie wiersza poleceń to polecenie:
mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Python
- Python 3.6 lub nowszy
- Narzędzie do zarządzania pakietami pip
Node.js
Google Apps Script
- Projekt Apps Script połączony z Twoim projektem Google Cloud. Aby zainicjować projekt Apps Script, przeczytaj krótkie wprowadzenie do aplikacji Google Apps Script do czatu.
Krok 1. Skonfiguruj ekran zgody OAuth, określ zakresy i zarejestruj aplikację
Gdy do autoryzacji używasz protokołu OAuth 2.0, Google wyświetla użytkownikowi ekran zgody z podsumowaniem projektu, stosowanych w nim zasad oraz żądanych zakresów autoryzacji. Skonfigurowanie ekranu zgody OAuth w aplikacji określa, co Google wyświetla użytkownikom i weryfikatorom, oraz rejestruje aplikację, aby można ją było opublikować później.
Wszystkie aplikacje używające protokołu OAuth 2.0 wymagają konfiguracji ekranu zgody, ale wystarczy podać zakresy dla aplikacji używanych przez osoby spoza organizacji Google Workspace.
W konsoli Google Cloud otwórz Menu > Interfejsy API i usługi > Ekran akceptacji OAuth.
Wybierz typ użytkownika aplikacji, a potem kliknij Utwórz.
Wypełnij formularz rejestracji aplikacji, a następnie kliknij Zapisz i kontynuuj.
Kliknij Dodaj lub usuń zakresy. Dodaj i zweryfikuj zakresy autoryzacji wymagane przez aplikację, kliknij Aktualizuj, a następnie kliknij Zapisz i kontynuuj.
Przejrzyj podsumowanie rejestracji aplikacji. Kliknij Edytuj, aby wprowadzić zmiany, lub kliknij Powrót do panelu.
Krok 2. Utwórz w konsoli Google Cloud dane uwierzytelniające identyfikator klienta OAuth
Aby uwierzytelnić się jako użytkownik i uzyskać dostęp do danych użytkownika w aplikacji, musisz utworzyć co najmniej 1 identyfikator klienta OAuth 2.0. Identyfikator klienta wskazuje konkretną aplikację na serwerach OAuth Google. Jeśli Twoja aplikacja działa na wielu platformach, np. w systemie Android, iOS i w przeglądarce, musisz utworzyć osobny identyfikator klienta dla każdej z nich.
Utwórz dane uwierzytelniające identyfikator klienta OAuth
Wybierz typ aplikacji, aby uzyskać szczegółowe instrukcje tworzenia identyfikatora klienta OAuth:
Aplikacja internetowa
- W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Dane logowania.
- Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
- Kliknij Typ aplikacji > Aplikacja internetowa.
- W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest widoczna tylko w konsoli Google Cloud.
- Dodaj autoryzowane identyfikatory URI powiązane z Twoją aplikacją:
- Aplikacje po stronie klienta (JavaScript) – w sekcji Autoryzowane źródła JavaScript kliknij Dodaj identyfikator URI. Następnie wpisz identyfikator URI, którego będziesz używać w przypadku żądań przeglądarki. Identyfikuje ona domeny, z których aplikacja może wysyłać żądania interfejsu API do serwera OAuth 2.0.
- Aplikacje po stronie serwera (Java, Python i inne) – w sekcji Autoryzowane identyfikatory URI przekierowania kliknij Dodaj identyfikator URI. Następnie wpisz identyfikator URI punktu końcowego, do którego serwer OAuth 2.0 może wysyłać odpowiedzi.
- Kliknij Utwórz. Pojawi się ekran utworzony przez klienta OAuth zawierający nowy identyfikator i tajny klucz klienta.
Zapisz identyfikator klienta. Tajne klucze klienta nie są używane w przypadku aplikacji internetowych.
- Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji Identyfikatory klientów OAuth 2.0.
Android
- W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Dane logowania.
- Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
- Kliknij Typ aplikacji > Android.
- W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest widoczna tylko w konsoli Google Cloud.
- W polu „Nazwa pakietu” wpisz nazwę pakietu z pliku
AndroidManifest.xml
. - W polu „Odcisk cyfrowy certyfikatu SHA-1” wpisz wygenerowany odcisk cyfrowy certyfikatu SHA-1.
- Kliknij Utwórz. Pojawi się ekran utworzony przez klienta OAuth zawierający nowy identyfikator klienta.
- Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.
iOS
- W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Dane logowania.
- Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
- Kliknij Typ aplikacji > iOS.
- W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest widoczna tylko w konsoli Google Cloud.
- W polu „Identyfikator pakietu” wpisz identyfikator pakietu podany w pliku
Info.plist
aplikacji. - Opcjonalnie: jeśli Twoja aplikacja jest widoczna w Apple App Store, wpisz jej identyfikator.
- Opcjonalnie: w polu „Identyfikator zespołu” wpisz unikalny 10-znakowy ciąg znaków wygenerowany przez Apple i przypisany do Twojego zespołu.
- Kliknij Utwórz. Pojawi się ekran utworzony przez klienta OAuth zawierający nowy identyfikator i tajny klucz klienta.
- Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.
Aplikacja Chrome
- W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Dane logowania.
- Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
- Kliknij Typ aplikacji > Aplikacja Chrome.
- W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest widoczna tylko w konsoli Google Cloud.
- W polu „Identyfikator aplikacji” wpisz niepowtarzalny 32-znakowy identyfikator aplikacji. Tę wartość identyfikatora znajdziesz w adresie URL aplikacji w sklepie Chrome Web Store oraz w panelu dewelopera Chrome Web Store.
- Kliknij Utwórz. Pojawi się ekran utworzony przez klienta OAuth zawierający nowy identyfikator i tajny klucz klienta.
- Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.
Aplikacja komputerowa
- W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Dane logowania.
- Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
- Kliknij Typ aplikacji > Aplikacja komputerowa.
- W polu Nazwa wpisz nazwę danych logowania. Ta nazwa jest widoczna tylko w konsoli Google Cloud.
- Kliknij Utwórz. Pojawi się ekran utworzony przez klienta OAuth zawierający nowy identyfikator i tajny klucz klienta.
- Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji Identyfikatory klienta OAuth 2.0.
Telewizory i urządzenia wejściowe z ograniczonym dostępem
- W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Dane logowania.
- Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
- Kliknij Typ aplikacji > Telewizory i urządzenia wejściowe z ograniczonym dostępem.
- W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest widoczna tylko w konsoli Google Cloud.
- Kliknij Utwórz. Pojawi się ekran utworzony przez klienta OAuth zawierający nowy identyfikator i tajny klucz klienta.
- Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.
Universal Windows Platform (UWP)
- W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Dane logowania.
- Kliknij Utwórz dane logowania > Identyfikator klienta OAuth.
- Kliknij Typ aplikacji > Universal Windows Platform (UWP).
- W polu „Nazwa” wpisz nazwę danych logowania. Ta nazwa jest widoczna tylko w konsoli Google Cloud.
- W polu „Identyfikator sklepu” wpisz niepowtarzalną, 12-znakową wartość identyfikatora sklepu Microsoft Store aplikacji. Znajdziesz go w adresie URL swojej aplikacji w Microsoft Store oraz w Centrum Partnerów.
- Kliknij Utwórz. Pojawi się ekran utworzony przez klienta OAuth zawierający nowy identyfikator i tajny klucz klienta.
- Kliknij OK. Nowo utworzone dane logowania pojawią się w sekcji „Identyfikatory klienta OAuth 2.0”.
Pobierz plik JSON z tajnym kluczem klienta
Plik tajnego klucza klienta stanowi reprezentację danych logowania identyfikatora klienta OAuth, z których może się odwoływać aplikacja do obsługi czatu podczas podawania danych logowania.
W konsoli Google Cloud kliknij Menu > Interfejsy API i usługi > Dane logowania.
W sekcji Identyfikatory klienta OAuth 2.0 kliknij utworzony identyfikator klienta.
Kliknij Pobierz JSON.
Zapisz plik jako
client_secrets.json
.
Krok 3. Zainstaluj bibliotekę klienta Google i inne zależności
Zainstaluj bibliotekę klienta Google i inne zależności wymagane w projekcie.
Java
Aby dodać do projektu Maven biblioteki klienta Google i inne wymagane zależności, edytuj plik pom.xml
w katalogu projektu i dodaj te zależności:
<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
Jeśli nie masz jeszcze zainstalowanych bibliotek klienta Google dla Pythona, uruchom to polecenie w interfejsie wiersza poleceń:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
Node.js
Aby dodać biblioteki klienta Google i inne wymagane zależności do projektu Node.js, przejdź do katalogu swojego projektu i uruchom to polecenie w interfejsie wiersza poleceń:
npm install "@googleapis/chat" open server-destroy
Google Apps Script
W tym przykładzie do wywoływania Google Chat API używana jest zaawansowana usługa czatu. Aby włączyć usługę w projekcie Apps Script:
- Po lewej stronie kliknij Edytor .
- Po lewej stronie obok opcji Usługi kliknij Dodaj usługę .
- Wybierz Google Chat API.
- W sekcji Wersja wybierz v1.
- Kliknij Dodaj.
Możesz używać dowolnego języka obsługiwanego przez nasze biblioteki klienta.
Krok 4. Napisz skrypt, który wywołuje interfejs Chat API
Wywołanie interfejsu API z autoryzacją OAuth jest procesem wieloetapowym. W przypadku aplikacji internetowych lub komputerowych proces przebiega zwykle tak:
- Aplikacja kieruje użytkownika na stronę autoryzacji, która zawiera prośbę o dostęp do danych użytkownika określonych przez zakresy autoryzacji. Aplikacja identyfikuje się za pomocą danych logowania identyfikatora klienta.
- Użytkownik sprawdza uprawnienia wymagane przez aplikację i zatwierdza prośbę.
- Serwer uwierzytelniania Google przekierowuje przeglądarkę do punktu końcowego HTTP aplikacji wraz z kodem autoryzacji.
- Aplikacja wysyła kolejne żądanie do serwera autoryzacji Google, aby wymienić kod autoryzacji na token dostępu.
- Aplikacja używa tokena dostępu do wywoływania interfejsu API w imieniu użytkownika.
Więcej informacji o procesie autoryzacji OAuth znajdziesz w artykule Korzystanie z protokołu OAuth 2.0 do uzyskiwania dostępu do interfejsów API Google (w języku angielskim).
Poniższe przykłady kodu w języku Java, Python i Node.js wykorzystują bibliotekę klienta do wykonywania przepływu autoryzacji OAuth. Otwiera lokalny serwer HTTP, aby odebrać kod autoryzacji z serwera autoryzacji, który następnie wymieni na token dostępu. W przykładowym kodzie Apps Script proces autoryzacji jest obsługiwany przez Apps Script.
Po zakończeniu procesu uwierzytelniania skrypt uwierzytelnia się w Chat API przy użyciu tokena dostępu użytkownika, a następnie tworzy pokój.
Java
- W katalogu projektu otwórz plik
src/main/java/com/google/chat/app/authsample/App.java
. Zastąp zawartość pliku
App.java
tym kodem: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(); } }
Utwórz nowy podkatalog o nazwie
resources
w katalogu projektu.Skopiuj plik
client_secrets.json
do podkataloguresources
.Aby skonfigurować narzędzie Maven tak, aby dołączało plik tajnych kluczy klienta do pakietu projektu, edytuj plik
pom.xml
w katalogu projektu i dodaj tę konfigurację do sekcji<build>
:<build> <!-- ... existing configurations ... --> <resources> <resource> <directory>resources</directory> </resource> </resources> </build>
Aby skonfigurować narzędzie Maven do uwzględniania zależności w pakiecie projektu i wykonywania klasy głównej aplikacji, edytuj plik
pom.xml
w katalogu projektu i dodaj tę konfigurację do sekcji<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
Zapisz ten kod w pliku o nazwie
chat_space_create_named.py
, w tym samym katalogu, w którym znajduje się plikclient_secrets.json
: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
Zapisz ten kod w pliku o nazwie
chat_space_create_named.js
w tym samym katalogu, w którym znajduje się projekt Node.js iclient_secrets.json
: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);
Google Apps Script
W edytorze Apps Script edytuj plik
appsscript.json
i dodaj zakres OAuth niezbędny do wywoływania interfejsu API:"oauthScopes": [ "https://www.googleapis.com/auth/chat.spaces.create" ]
Zapisz ten kod w pliku o nazwie
ChatSpaceCreateNamed.gs
w projekcie Apps Script:/** * 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); } }
Krok 5. Uruchom przykładowy skrypt
Aby uruchomić przykład, z poziomu wiersza poleceń przejdź do katalogu, w którym znajdują się pliki projektu, a następnie wykonaj to polecenie:
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
Google Apps Script
Otwórz plik ChatSpaceCreateNamed.gs
w edytorze Apps Script i kliknij Uruchom.
Otworzy się przeglądarka i poprosi o zalogowanie się na konto Google:
Gdy się zalogujesz, pojawi się ekran zgody OAuth z prośbą o przyznanie uprawnień aplikacji.
Gdy przyznasz uprawnienia, skrypt wywołuje interfejs Chat API, który odpowiada, tworząc pokój czatu o wyświetlanej nazwie API-made
. Konsola wyświetli szczegóły wywołania interfejsu API. Aby znaleźć pokój, otwórz panel Pokoje w Google Chat.
Rozwiąż problemy z przykładem
Podczas uruchamiania programu chat_space_create_named.py
może pojawić się błąd:
Expected a JSON object with a single property for a "web" or "installed" application
Ten komunikat o błędzie oznacza, że plik client_secrets.json
pobrany z konsoli Google Cloud nie zaczyna się od właściwości "web"
ani "installed"
. Jeśli po uwierzytelnieniu przy użyciu pobranego pliku kod nie zapisuje tokena dostępu w nowym pliku, takim jak token.json
, token dostępu jest zapisywany w pliku client_secrets.json
, co może powodować ten błąd podczas kolejnych prób autoryzacji.
Aby naprawić błąd, jeszcze raz pobierz plik tajnego klienta z konsoli Google Cloud i zapisz nowy plik w miejscu bieżącego.
Powiązane artykuły
Jeśli Twoja aplikacja musi nadal używać tokenów użytkownika poza zakresem pojedynczego przepływu, może przechowywać te tokeny, aby móc je później wykorzystać. W tym przypadku aplikacja musi obsługiwać tokeny użytkowników w bezpieczny sposób oraz je unieważniać i wygasać. Więcej informacji znajdziesz w przewodniku po sprawdzonych metodach korzystania z OAuth 2.0.
Aby dowiedzieć się, co jeszcze potrafi Chat API, zapoznaj się z dokumentacją interfejsu Chat API.