Bu kılavuzda, Chat API'ye erişmek için OAuth 2.0'ın kullanıcıların Google kimlik bilgileriyle nasıl kullanılacağı açıklanmaktadır. Kullanıcı kimlik bilgileriyle kimlik doğrulama ve yetkilendirme, Chat uygulamalarının kullanıcı verilerine erişmesine ve kimliği doğrulanmış kullanıcı adına işlemler gerçekleştirmesine olanak tanır. Kullanıcı adına kimlik doğrulaması sayesinde uygulama, söz konusu kullanıcıyla aynı izinlere sahip olur ve söz konusu kullanıcı tarafından gerçekleştirilmiş gibi işlemler gerçekleştirebilir.
Chat uygulamaları, kullanıcı kimlik bilgileriyle bir API çağrısı için kimlik doğrulaması yaptıktan ve yetkilendirildikten sonra şunları yapabilir:
- Chat alanları oluşturma
- Kullanıcıları Chat alanlarına ve grup görüşmelerine ekleyebilirsiniz.
- Diğer Workspace API'lerinde aşağıdakiler gibi kullanıcı verileriyle çalışın:
- Google Takvim'de etkinlikler oluşturun.
- Google E-Tablolar'da öğeleri günlüğe kaydedin.
- Gmail ile e-posta gönderin.
Bir uygulama, kullanıcı kimlik doğrulaması ile bir işlem gerçekleştirdiğinde (ör. alan oluşturma) Google Chat, kullanıcılara işlemi yetkilendiren kullanıcı için işlemi gerçekleştiren uygulamanın adını bildiren bir ilişkilendirme mesajı gösterir.

Chat uygulamalarının ne zaman kimlik doğrulama gerektirdiği ve ne tür kimlik doğrulama kullanılması gerektiği hakkında daha fazla bilgi edinmek için Chat API kimlik doğrulama ve yetkilendirmeye genel bakış sayfasındaki Gerekli kimlik doğrulama türleri bölümünü inceleyin.
Alan yöneticisiyseniz bir uygulamanın hizmet hesabına, her kullanıcının izin vermesini gerektirmeden kullanıcılarınızın verilerine erişmesi için alan genelinde yetki verebilirsiniz. Alan genelinde yetkiyi yapılandırdıktan sonra hizmet hesabı, bir kullanıcı hesabının kimliğine bürünebilir. Kimlik doğrulama için bir hizmet hesabı kullanılsa da alan genelinde yetki, bir kullanıcının kimliğine bürünür ve bu nedenle kullanıcı kimlik doğrulaması olarak kabul edilir. Kullanıcı kimlik doğrulaması gerektiren tüm işlevlerde alan genelinde yetkiyi kullanabilirsiniz.
Ön koşullar
Bu kılavuzdaki örneği çalıştırmak için aşağıdaki ön koşullara ihtiyacınız vardır:
- Google Chat'e erişimi olan bir Google Workspace hesabı.
- Chat API'nin etkinleştirildiği ve yapılandırıldığı bir Google Cloud projesi. Proje oluşturmak ve bir API'yi etkinleştirmek için Proje oluşturma ve API'yi etkinleştirme bölümünü inceleyin.
- Google Cloud Console'daki Chat API yapılandırma sayfasında yapılandırılmış bir Chat uygulamasıdır. Chat uygulaması oluşturmak ve yapılandırmak için Cloud Functions ile Google Chat uygulaması oluşturma başlıklı makaleyi inceleyin.
Ayrıca, dile özgü aşağıdaki ön koşulları da karşılamanız gerekir:
Java
- JDK 1.7 veya sonraki bir sürüm
- Maven paket yönetimi aracı
Başlatılmış bir Maven projesi. Yeni bir projeyi başlatmak için komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:
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 veya sonraki sürümler
- pip paket yönetimi aracı
Node.js
Apps Komut Dosyası
- Google Cloud projenize bağlı bir Apps Komut Dosyası projesi. Bir Apps Komut Dosyası projesini başlatmak için Google Apps Komut Dosyası Chat uygulaması hızlı başlangıç kılavuzu sayfasına göz atın.
1. Adım: OAuth izin ekranını yapılandırın, kapsamları belirtin ve uygulamanızı kaydedin
Yetkilendirme için OAuth 2.0 kullandığınızda Google, kullanıcıya projenizin özetini, politikalarını ve istenen yetkilendirme kapsamlarını içeren bir izin ekranı görüntüler. Uygulamanızın OAuth izin ekranını yapılandırmak, Google'ın kullanıcılara ve uygulama incelemecilere ne görüntüleyeceğini tanımlar ve uygulamanızı daha sonra yayınlayabilmeniz için kaydeder.
OAuth 2.0 kullanan tüm uygulamalar için izin ekranı yapılandırması gerekir ancak yalnızca Google Workspace kuruluşunuzun dışındaki kişiler tarafından kullanılan uygulamaların kapsamlarını listelemeniz gerekir.
Google Cloud konsolunda Menü > API'ler ve Hizmetler > OAuth izin ekranı'na gidin.
Uygulamanızın kullanıcı türünü seçin, ardından Oluştur'u tıklayın.
Uygulama kayıt formunu doldurup Kaydet ve Devam Et'i tıklayın.
Kapsam Ekle veya Kaldır'ı tıklayın. Uygulamanızın gerektirdiği yetkilendirme kapsamlarını ekleyip doğrulayın, Güncelle'yi ve ardından Kaydet ve Devam Et'i tıklayın.
Uygulama kaydı özetinizi inceleyin. Değişiklik yapmak için Düzenle'yi veya Kontrol Paneline Dön'ü tıklayın.
2. Adım: Google Cloud Console'da OAuth istemci kimliği kimlik bilgileri oluşturun
Son kullanıcı olarak kimlik doğrulaması yapmak ve uygulamanızda kullanıcı verilerine erişmek için bir veya daha fazla OAuth 2.0 İstemci Kimliği oluşturmanız gerekir. İstemci kimliği, tek bir uygulamayı Google'ın OAuth sunucularına tanımlamak için kullanılır. Uygulamanız Android, iOS ve Web gibi birden fazla platformda çalışıyorsa her platform için ayrı bir istemci kimliği oluşturmanız gerekir.
OAuth istemci kimliği kimlik bilgileri oluştur
OAuth istemci kimliğinin nasıl oluşturulacağına ilişkin özel talimatlar için uygulama türünüzü seçin:
Web uygulaması
- Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgileri Oluştur > OAuth istemci kimliği'ni tıklayın.
- Uygulama türü > Web uygulaması'nı tıklayın.
- Ad alanına, kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
- Uygulamanızla ilgili yetkili URI'leri ekleyin:
- İstemci tarafı uygulamalar (JavaScript): Yetkilendirilmiş JavaScript kaynakları altında URI ekle'yi tıklayın. Ardından tarayıcı istekleri için kullanılacak bir URI girin. Bu, uygulamanızın OAuth 2.0 sunucusuna API isteği gönderebileceği alan adlarını tanımlar.
- Sunucu tarafı uygulamalar (Java, Python ve daha fazlası): Yetkili yönlendirme URI'leri bölümünde URI ekle'yi tıklayın. Ardından OAuth 2.0 sunucusunun yanıt gönderebileceği bir uç nokta URI'si girin.
- Oluştur'u tıklayın. Yeni İstemci Kimliğinizi ve İstemci sırrınızı gösteren OAuth istemcisi oluşturma ekranı görünür.
İstemci kimliğini not edin. İstemci gizli anahtarları web uygulamaları için kullanılmaz.
- OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi, OAuth 2.0 İstemci Kimlikleri bölümünde görünür.
Android
- Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgileri Oluştur > OAuth istemci kimliği'ni tıklayın.
- Uygulama türü > Android'i tıklayın.
- "Ad" alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
- "Paket adı" alanına
AndroidManifest.xml
dosyanızdaki paket adını girin. - "SHA-1 sertifika parmak izi" alanına oluşturduğunuz SHA-1 sertifikası parmak izini girin.
- Oluştur'u tıklayın. Yeni İstemci Kimliğinizi gösteren OAuth istemcisi oluşturma ekranı görünür.
- OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" bölümünde görüntülenir.
iOS
- Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgileri Oluştur > OAuth istemci kimliği'ni tıklayın.
- Uygulama türü > iOS'i tıklayın.
- "Ad" alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
- "Paket kimliği" alanına paket tanımlayıcısını, uygulamanın
Info.plist
dosyasında listelendiği şekilde girin. - İsteğe bağlı: Uygulamanız Apple App Store'da görünüyorsa App Store kimliğini girin.
- İsteğe bağlı: "Ekip Kimliği" alanına Apple tarafından oluşturulan ve ekibinize atanan 10 karakterli benzersiz dizeyi girin.
- Oluştur'u tıklayın. Yeni İstemci Kimliğinizi ve İstemci sırrınızı gösteren OAuth istemcisi oluşturma ekranı görünür.
- OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" bölümünde görüntülenir.
Chrome uygulaması
- Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgileri Oluştur > OAuth istemci kimliği'ni tıklayın.
- Uygulama türü > Chrome uygulaması'nı tıklayın.
- "Ad" alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
- "Uygulama Kimliği" alanına uygulamanızın 32 karakterli benzersiz kimlik dizesini girin. Bu kimlik değerini uygulamanızın Chrome Web Mağazası URL'sinde ve Chrome Web Mağazası Geliştirici Kontrol Paneli'nde bulabilirsiniz.
- Oluştur'u tıklayın. Yeni İstemci Kimliğinizi ve İstemci sırrınızı gösteren OAuth istemcisi oluşturma ekranı görünür.
- OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" bölümünde görüntülenir.
Masaüstü uygulaması
- Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgileri Oluştur > OAuth istemci kimliği'ni tıklayın.
- Uygulama türü > Masaüstü uygulaması'nı tıklayın.
- Ad alanına, kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
- Oluştur'u tıklayın. Yeni İstemci Kimliğinizi ve İstemci sırrınızı gösteren OAuth istemcisi oluşturma ekranı görünür.
- OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi, OAuth 2.0 İstemci Kimlikleri bölümünde görüntülenir.
TV'ler ve Sınırlı Giriş cihazları
- Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgileri Oluştur > OAuth istemci kimliği'ni tıklayın.
- Uygulama türü > TV'ler ve Sınırlı Giriş cihazları'nı tıklayın.
- "Ad" alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
- Oluştur'u tıklayın. Yeni İstemci Kimliğinizi ve İstemci sırrınızı gösteren OAuth istemcisi oluşturma ekranı görünür.
- OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" bölümünde görüntülenir.
Evrensel Windows Platformu (UWP)
- Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgileri Oluştur > OAuth istemci kimliği'ni tıklayın.
- Uygulama türü > Evrensel Windows Platformu (UWP) seçeneğini tıklayın.
- "Ad" alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
- "Mağaza kimliği" alanına uygulamanızın 12 karakterlik benzersiz Microsoft Store kimliği değerini girin. Bu kimliği, uygulamanızın Microsoft Store URL'sinde ve İş Ortağı Merkezi'nde bulabilirsiniz.
- Oluştur'u tıklayın. Yeni İstemci Kimliğinizi ve İstemci sırrınızı gösteren OAuth istemcisi oluşturma ekranı görünür.
- OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" bölümünde görüntülenir.
İstemci gizli anahtarı JSON dosyasını indir
İstemci gizli anahtarı dosyası, Chat uygulamanızın kimlik bilgilerini sağlarken başvurabileceği OAuth istemci kimliği kimlik bilgilerinin JSON temsilidir.
Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
OAuth 2.0 İstemci Kimlikleri bölümünde, oluşturduğunuz istemci kimliğini tıklayın.
Download JSON (JSON'ı indir) seçeneğini tıklayın.
Dosyayı
client_secrets.json
olarak kaydedin.
3. Adım: Google istemci kitaplığını ve diğer bağımlılıkları yükleyin
Google istemci kitaplığını ve proje için gereken diğer bağımlılıkları yükleyin.
Java
Maven projenize Google istemci kitaplıklarını ve diğer gerekli bağımlılıkları eklemek için projenizin dizininde pom.xml
dosyasını düzenleyin ve aşağıdaki bağımlılıkları ekleyin:
<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 için Google istemci kitaplıklarını henüz yüklemediyseniz komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Node.js
Node.js projenize Google istemci kitaplıklarını ve gerekli diğer bağımlılıkları eklemek için projenizin dizinine geçin ve komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:
npm install "@googleapis/chat" open server-destroy
Apps Komut Dosyası
Bu örnek, Google Chat API'yi çağırmak için Gelişmiş Sohbet hizmetini kullanır. Apps Komut Dosyası projeniz için hizmeti etkinleştirmek üzere:
- Sol tarafta, Düzenleyici'yi tıklayın.
- Sol tarafta, Hizmetler'in yanındaki Hizmet ekle'yi tıklayın .
- Google Chat API'yi seçin.
- Sürüm'te v1'i seçin.
- Ekle'yi tıklayın.
İstemci kitaplıklarımız tarafından desteklenen herhangi bir dili kullanabilirsiniz.
4. adım: Chat API'yi çağıran bir komut dosyası yazın
OAuth yetkilendirmesi ile bir API'nin çağrılması çok adımlı bir işlemdir. Web veya masaüstü uygulamalarında işlem genellikle şu şekildedir:
- Uygulama, kullanıcıyı yetkilendirme kapsamları tarafından belirtilen kullanıcı verilerine erişim isteyen bir yetkilendirme sayfasına yönlendirir. Uygulama kendini istemci kimliği kimlik bilgileriyle tanımlar.
- Kullanıcı, uygulama tarafından istenen izinleri inceleyip isteği onaylar.
- Google'ın kimlik doğrulama sunucusu, tarayıcıyı bir yetkilendirme koduyla birlikte uygulamanın HTTP uç noktasına yönlendirir.
- Uygulama, yetkilendirme kodunu bir erişim jetonuyla değiştirmek için Google'ın yetkilendirme sunucusuna başka bir istek gönderir.
- Uygulama, kullanıcı adına API'yi çağırmak için erişim jetonunu kullanır.
OAuth yetkilendirme süreci hakkında daha fazla bilgi edinmek için Google API'leri Kılavuzuna Erişmek için OAuth 2.0'ı Kullanma bölümüne bakın.
Java, Python ve Node.js'de yer alan aşağıdaki kod örnekleri, OAuth yetkilendirme akışını yürütmek için bir istemci kitaplığı kullanır. Yetkilendirme sunucusundan yetkilendirme kodunu almak için yerel bir HTTP sunucusu açar ve kodu, daha sonra erişim jetonuyla değiştirir. Apps Komut Dosyası kod örneğinde bu yetkilendirme akışı Apps Komut Dosyası tarafından yürütülür.
Kimlik doğrulama akışı tamamlandıktan sonra komut dosyası, kullanıcının erişim jetonunu kullanarak Chat API ile kimlik doğrular ve ardından bir alan oluşturur.
Java
- Projenizin dizininde
src/main/java/com/google/chat/app/authsample/App.java
dosyasını açın. App.java
içeriğini şu kodla değiştirin: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(); } }
Projenizin dizininde
resources
adlı yeni bir alt dizin oluşturun.client_secrets.json
dosyasınıresources
alt dizinine kopyalayın.Maven'i istemci gizli anahtarı dosyasını proje paketine dahil edecek şekilde yapılandırmak için projenizin dizininde
pom.xml
dosyasını düzenleyin ve aşağıdaki yapılandırmayı<build>
bölümüne ekleyin:<build> <!-- ... existing configurations ... --> <resources> <resource> <directory>resources</directory> </resource> </resources> </build>
Maven'i proje paketine bağımlılıkları dahil edecek ve uygulamanızın ana sınıfını yürütecek şekilde yapılandırmak için projenizin dizininde
pom.xml
dosyasını düzenleyin ve aşağıdaki yapılandırmayı<plugins>
bölümüne ekleyin:<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
Aşağıdaki kodu,
client_secrets.json
kodunu içeren aynı dizindechat_space_create_named.py
adlı bir dosyaya kaydedin:from __future__ import print_function import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError # 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
Aşağıdaki kodu, Node.js projesini ve
client_secrets.json
dosyasını barındıran aynı dizinde,chat_space_create_named.js
adlı bir dosyaya kaydedin: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 Komut Dosyası
Apps Komut Dosyası düzenleyicisinde,
appsscript.json
dosyasını düzenleyin ve API'yi çağırmak için gerekli OAuth kapsamını ekleyin:"oauthScopes": [ "https://www.googleapis.com/auth/chat.spaces.create" ]
Aşağıdaki kodu Apps Komut Dosyası projenizdeki
ChatSpaceCreateNamed.gs
adlı bir dosyaya kaydedin:/** * 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. Adım: Örnek komut dosyasını çalıştırın
Örneği çalıştırmak için komut satırından proje dosyalarınızın bulunduğu dizine gidin ve aşağıdaki komutu yürütün:
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 Komut Dosyası
ChatSpaceCreateNamed.gs
dosyasını Apps Komut Dosyası Düzenleyici'de
açın ve Çalıştır'ı tıklayın.
Bir tarayıcı açılır ve Google Hesabınızda oturum açmanızı ister:
Oturum açtıktan sonra OAuth izin ekranı görüntülenir ve uygulamaya izin vermeniz istenir.
İzin vermenizin ardından komut dosyası, Chat API'yi çağırır ve bu API, görünen adı API-made
ile Chat alanı oluşturarak yanıt verir. Konsol, API çağrısının ayrıntılarını yazdırır. Alanı bulmak için Google Chat'teki Alanlar paneline gidin.
Örnekteki sorunları giderin
chat_space_create_named.py
çalışırken şöyle bir hata alabilirsiniz:
Expected a JSON object with a single property for a "web" or "installed" application
Bu hata mesajı, Google Cloud Console'dan indirdiğiniz client_secrets.json
dosyasının "web"
veya "installed"
özelliğiyle başlamadığı anlamına gelir. İndirilen dosyayla kimlik doğrulaması yapıldıktan sonra kodunuz, erişim jetonunu token.json
gibi yeni bir dosyaya kaydetmezse erişim jetonu client_secrets.json
adresine yazılır ve sonraki yetkilendirme denemeleri sırasında bu hataya neden olabilir.
Hatayı gidermek için istemci gizli anahtarı dosyasını Google Cloud Console'dan tekrar indirin ve mevcut dosyanın yerine yeni dosyayı kaydedin.
İlgili konular
Uygulamanızın kullanıcı jetonlarını tek bir akışın kapsamı dışında kullanmaya devam etmesi gerekiyorsa jetonları daha sonra yeniden kullanmak üzere saklayabilir. Bu durumda, uygulamanızın kullanıcı jetonlarını güvenli bir şekilde işlemesi ve yenileme jetonunun iptali ile geçerlilik süresini işlemesi gerekir. Daha fazla bilgi için OAuth 2.0 En İyi Uygulamalar Kılavuzu'nu Kullanma başlıklı makaleye göz atın.
Chat API referans belgelerini inceleyerek Chat API'nin başka neler yapabileceğini öğrenin.