Google Chat kullanıcısı olarak kimlik doğrulama ve yetkilendirme

Bu kılavuzda, OAuth 2.0'ın kullanıcılarla nasıl kullanılabileceği açıklanmaktadır. Google kimlik bilgilerini şuna erişin: Chat API. Kimlik doğrulama ve yetkilendirme ile birlikte Chat uygulamaları, kullanıcı verilerine erişebilir ve gerekli işlemleri yapabilir. kimlik doğrulaması yapılmış kullanıcı adına işlem yapmasına olanak tanır. Kullanıcının kimliğini doğrulayarak uygulama söz konusu kullanıcıyla aynı izinlere sahiptir ve işlem gerçekleştirebilir sanki o kullanıcı tarafından gerçekleştirilmiş gibi.

Kimlik doğrulaması ve yetkilendirmeden sonra API çağrısına ayarlanırsa Chat uygulamaları takip etmek için:

  • Chat alanları oluşturabilirsiniz.
  • 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:

Bir uygulama, kullanıcı kimlik doğrulamasıyla işlem yaptığında (ör. alan oluşturma) durumunda Google Chat, ilişkili bir atıf mesajı gösterir. kullanıcılara söz konusu işlemi gerçekleştiren uygulamanın adını söyleyen yetki veren bir kullanıcı olabilir.

Google Chat uygulaması, kullanıcı için alan oluşturur.
Şekil 1. Bir Chat uygulaması bir kullanıcı adına alan oluşturduğunda Google Chat'in gösterdiği ilişkilendirme mesajı.

Chat uygulamalarının ne zaman kimlik doğrulama gerektirdiği ve kimlik doğrulama türünü öğrenmek için Gerekli kimlik doğrulama türleri başlıklı makaleyi inceleyin.

Alan genelinde yetki kullanarak kimlik doğrulama ve yetkilendirme

Alan yöneticisiyseniz alan genelinde yetki verme bir uygulamanın hizmet hesabını kullanıcılarınızın hesaplarına erişecek şekilde yetkilendirmek için veri içermeyen her kullanıcının izin vermesi gerekir. Alan genelinde yetkiyi yapılandırdıktan sonra "the" hizmet hesabı, bir kullanıcı hesabının kimliğine bürünebilir. Hizmet hesabı, bir kullanıcının kimliğine bürünür ve bu nedenle kullanıcı kimlik doğrulaması olarak değerlendirilir. Kullanıcı gerektiren tüm işlevler alan genelinde yetkiyi kullanabilirsiniz.

Yönetici ayrıcalıklarını kullanarak kimlik doğrulama ve yetkilendirme

Alan yöneticisiyseniz veya yönetici ayrıcalıklarına sahip yetkili bir yöneticiyseniz geçerli yöntemler isteklerinde use_admin_access alanını ayarlayarak Google Chat API çağrılarınızın kimliğini yönetici ayrıcalıklarıyla doğrulayabilir ve bu çağrıları yetkilendirebilirsiniz. Daha fazla bilgi için API referans belgelerini inceleyin.

Bir Google Chat uygulaması, yönetici ayrıcalıklarına sahip bir işlem gerçekleştirdiğinde Chat, kullanıcılara işlemi gerçekleştiren Chat uygulamasının adını veya uygulamayı yetkilendiren yöneticinin adını söylemez, kullanıcılara bu işlemin yalnızca kuruluş yöneticileri tarafından gerçekleştirildiğini bildirir.

Ön koşullar

Bu kılavuzdaki örneği çalıştırmak için aşağıdaki ön koşulları karşılamanız gerekir:

Ayrıca, dile özgü aşağıdaki önkoşullara ihtiyacınız vardır:

Java

  • JDK 1.7 veya üzeri
  • Maven paket yönetim aracı
  • Başlatılmış bir Maven projesi. Yeni bir projeyi ilk kullanıma hazırlamak için şu komutu çalıştırın: aşağıdaki komutu girin:

    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önetim aracı

Node.js

  • Node.js
  • npm paket yönetim aracı
  • Başlatılmış bir Node.js projesi. Yeni bir projeyi ilk kullanıma hazırlamak için, proje başlatma belgesinde geçiş yapın, ardından komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:

    npm init
    

Apps Komut Dosyası

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, projenizin özetini ve istenen bilgileri içeren yetkilendirme kapsamları. Uygulamanızın OAuth izin ekranını yapılandırma Google'ın kullanıcılara ve uygulama incelemecilerine neler gösterdiğini tanımlar ve uygulamanızı kaydeder Böylece daha sonra yayınlayabilirsiniz.

OAuth 2.0 kullanan tüm uygulamalar için bir izin ekranı yapılandırması gerekir, ancak Google Workspace dışındaki kişiler tarafından kullanılan uygulamalar için kapsamları listelemeniz gerekiyor kurum içinde tutmaktır.

  1. Google Cloud konsolunda Menü'ye gidin > API'lar ve Hizmetler > OAuth izin ekranı.

    OAuth izin ekranına gidin.

  2. Uygulamanızın kullanıcı türünü seçip Oluştur'u tıklayın.

  3. Uygulama kayıt formunu doldurup Kaydet ve Devam Et'i tıklayın.

  4. Kapsam Ekle veya Kaldır'ı tıklayın. izin kapsamlarını ayarlamak için Güncelle'yi, ardından Kaydet ve Devam Et'i tıklayın.

  5. Uygulama kaydı özetinizi inceleyin. Değişiklik yapmak için Düzenle'yi tıklayın veya Kontrol Paneline Dön'ü tıklayın.

2. Adım: Google Cloud Console'da OAuth istemci kimliği kimlik bilgilerini oluşturun

Son kullanıcı olarak kimlik doğrulamak ve uygulamanızdaki kullanıcı verilerine erişmek için şunları yapmanız gerekir: Bir veya daha fazla OAuth 2.0 İstemci Kimliği oluşturun. Client-ID, bir tek bir uygulamayı Google'ın OAuth sunucularına göndermesini sağlar. Uygulamanız birden fazla cihazda çalışıyorsa platformlar (ör. Android, iOS ve web) için ayrı bir istemci kimliği oluşturmanız gerekir. her platform için geçerli.

OAuth istemci kimliği kimlik bilgileri oluşturma

OAuth istemci kimliğinin nasıl oluşturulacağına ilişkin talimatlar için uygulama türünüzü seçin:

Web uygulaması

  1. Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri.

    Kimlik bilgilerine git

  2. Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
  3. Uygulama türü > Web uygulaması'nı tıklayın.
  4. Ad alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud konsolunda gösterilir.
  5. Uygulamanızla ilgili yetkili URI'ler ekleyin:
    • İstemci tarafı uygulamalar (JavaScript): Yetkili 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 istekleri 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.
  6. Oluştur'u tıklayın. Yeni İstemci Kimliğiniz ve İstemci sırrınızın gösterildiği, OAuth istemcisi oluşturuldu ekranı görüntülenir.

    İstemci kimliğini not edin. İstemci gizli anahtarları web uygulamaları için kullanılmaz.

  7. Tamam'ı tıklayın. Yeni oluşturulan kimlik bilgisi OAuth 2.0 İstemci Kimlikleri altında görünür.

Android

  1. Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri.

    Kimlik bilgilerine git

  2. Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
  3. Uygulama türü > Android'i tıklayın.
  4. "Ad" bölümünde alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud konsolunda gösterilir.
  5. "Paket adı" bölümünde alanına, AndroidManifest.xml dosyanızdaki paket adını girin.
  6. "SHA-1 sertifika dijital parmak izi"nde alanına, oluşturulan SHA-1 sertifika parmak izinizi girin.
  7. Oluştur'u tıklayın. Yeni İstemci Kimliğinizin gösterildiği OAuth istemcisi oluşturuldu ekranı görünür.
  8. Tamam'ı tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" altında görünür.

iOS

  1. Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri.

    Kimlik bilgilerine git

  2. Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
  3. Uygulama türü > iOS'u tıklayın.
  4. "Ad" bölümünde alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud konsolunda gösterilir.
  5. "Paket kimliği"nde alanına, uygulamanın Info.plist dosyasında listelendiği şekilde paket tanımlayıcısını girin.
  6. İsteğe bağlı: Uygulamanız Apple App Store'da görünüyorsa App Store kimliğini girin.
  7. İsteğe bağlı: "Ekip Kimliği"nde alanına, Apple tarafından oluşturulan ve ekibinize atanan 10 karakterlik benzersiz dizeyi girin.
  8. Oluştur'u tıklayın. Yeni İstemci Kimliğiniz ve İstemci sırrınızın gösterildiği, OAuth istemcisi oluşturuldu ekranı görüntülenir.
  9. Tamam'ı tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" altında görünür.

Chrome uygulaması

  1. Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri.

    Kimlik bilgilerine git

  2. Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
  3. Uygulama türü > Chrome uygulaması'nı tıklayın.
  4. "Ad" bölümünde alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud konsolunda gösterilir.
  5. "Uygulama Kimliği" bölümünde alanına, uygulamanızın 32 karakterlik 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.
  6. Oluştur'u tıklayın. Yeni İstemci Kimliğiniz ve İstemci sırrınızın gösterildiği, OAuth istemcisi oluşturuldu ekranı görüntülenir.
  7. Tamam'ı tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" altında görünür.

Masaüstü uygulaması

  1. Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri.

    Kimlik bilgilerine git

  2. Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
  3. Uygulama türü > Masaüstü uygulaması'nı tıklayın.
  4. Ad alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud konsolunda gösterilir.
  5. Oluştur'u tıklayın. Yeni İstemci Kimliğiniz ve İstemci sırrınızın gösterildiği, OAuth istemcisi oluşturuldu ekranı görüntülenir.
  6. Tamam'ı tıklayın. Yeni oluşturulan kimlik bilgisi OAuth 2.0 İstemci Kimlikleri altında görünür.

TV'ler ve Sınırlı Giriş cihazları

  1. Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri.

    Kimlik bilgilerine git

  2. Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
  3. Uygulama türü > TV'ler ve Sınırlı Giriş cihazları.
  4. "Ad" bölümünde alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud konsolunda gösterilir.
  5. Oluştur'u tıklayın. Yeni İstemci Kimliğiniz ve İstemci sırrınızın gösterildiği, OAuth istemcisi oluşturuldu ekranı görüntülenir.
  6. Tamam'ı tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" altında görünür.

Evrensel Windows Platformu (UWP)

  1. Google Cloud konsolunda Menü > API'ler ve Hizmetler > Kimlik bilgileri.

    Kimlik bilgilerine git

  2. Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
  3. Uygulama türü > Evrensel Windows Platformu (UWP) seçeneğini tıklayın.
  4. "Ad" bölümünde alanına kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud konsolunda gösterilir.
  5. "Mağaza kimliği"nde 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.
  6. Oluştur'u tıklayın. Yeni İstemci Kimliğiniz ve İstemci sırrınızın gösterildiği, OAuth istemcisi oluşturuldu ekranı görüntülenir.
  7. Tamam'ı tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" altında görünür.

İstemci gizli anahtarı JSON dosyasını indirme

İstemci gizli anahtarı dosyası, OAuth istemci kimliğinin JSON gösterimidir. Chat uygulamanızın şu durumlarda referans alabileceği kimlik bilgileri: hesap ekiplerinizle görüşün.

  1. Google Cloud konsolunda Menü'ye gidin > API'lar ve Hizmetler > Kimlik bilgileri.

    Kimlik bilgilerine git

  2. OAuth 2.0 Client IDs (OAuth 2.0 İstemci Kimlikleri) bölümünde, oluşturduğunuz istemci kimliğini tıklayın.

  3. JSON'u indir'i tıklayın.

  4. 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

Google istemci kitaplıklarını ve diğer gerekli bağımlılıkları Maven projesi için, projenizin dizininde pom.xml dosyasını düzenleyin ve bağımlılıkları olan üçlü kısıtları içerir:

<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 şu komutu kullanın:

pip3 install --upgrade google-api-python-client google-auth-oauthlib

Node.js

Google istemci kitaplıklarını ve diğer gerekli bağımlılıkları Node.js projesi için: projenizin dizinine geçiş yapın ve aşağıdaki komutu çalıştırın komutunu çalıştırın:

npm install "@googleapis/chat" open server-destroy

Apps Komut Dosyası

Bu örnekte kullanılan Gelişmiş Chat hizmeti Google Chat API'yi çağırın. Cihazınızda hizmeti etkinleştirmek için Apps Komut Dosyası projesi:

  1. Sol kısımdan Düzenleyici'yi tıklayın.
  2. Solda, Hizmetler'in yanındaki Hizmet ekle'yi tıklayın. .
  3. Google Chat API'yi seçin.
  4. Sürüm bölümünde v1'i seçin.
  5. Ekle'yi tıklayın.

Şu belgenin desteklediği herhangi bir dili kullanabilirsiniz: istemci kitaplıkları.

4. Adım: Chat API'yi çağıran bir komut dosyası yazın

OAuth yetkilendirmesi ile API çağırmak çok adımlı bir işlemdir. Web'de veya için bu işlem genellikle şu şekildedir:

  1. Uygulama, kullanıcıyı, kullanıcıya erişim isteyen bir yetkilendirme sayfasına yönlendiriyor. Yetkilendirme kapsamları tarafından belirtilen verilerdir. Uygulama kendini istemciyle tanıtıyor Kimlik bilgileri.
  2. Kullanıcı, uygulama tarafından istenen izinleri inceler ve isteği gönderin.
  3. Google'ın kimlik doğrulama sunucusu, tarayıcıyı uygulamanın HTTP'sine yönlendirir uç noktası gösterilir.
  4. Uygulama, aşağıdaki verileri almak için Google'ın yetkilendirme sunucusuna başka bir istek gönderir: yetkilendirme kodunu erişim jetonuyla değiştirin.
  5. Uygulama, kullanıcı adına API'yi çağırmak için erişim jetonunu kullanır.

OAuth yetkilendirme işlemi hakkında daha fazla bilgi edinmek için şu sayfaya göz atın: Google API'lerine Erişmek için OAuth 2.0 Kullanma Kılavuzu.

Java, Python ve Node.js'deki aşağıdaki kod örneklerinde, istemci kitaplığı OAuth yetkilendirme akışını yürütün. Aşağıdaki işlemleri gerçekleştirmek için bir yerel HTTP sunucusu açar kodu yetkilendirme sunucusundan geri alır ve daha sonra bu kod, bir erişim jetonu alabilirsiniz. Apps Komut Dosyası kod örneğinde bu yetkilendirme akışı Apps Komut Dosyası tarafından işlenir.

Kimlik doğrulama akışı tamamlandıktan sonra komut dosyası, Kullanıcının erişim jetonunu kullanan Chat API ve ardından bir alan oluşturuyor.

Java

  1. Projenizin dizininde dosyayı açın src/main/java/com/google/chat/app/authsample/App.java
  2. App.java içindeki içeriği aşağıdaki 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();
        }
    }
    
  3. Projenizin dizininde resources adlı yeni bir alt dizin oluşturun.

  4. client_secrets.json dosyasını resources alt dizinine kopyalayın.

  5. Maven'i istemci gizli anahtarı dosyasını proje paketine ekleyecek şekilde yapılandırmak için projenizin dizininde pom.xml dosyasını düzenleyin ve şunu ekleyin: yapılandırma işlemini <build> bölümüne ekleyin:

    <build>
      <!-- ... existing configurations ... -->
      <resources>
        <resource>
          <directory>resources</directory>
        </resource>
      </resources>
    </build>
    
  6. Maven'i bağımlılıkları proje paketine ekleyecek şekilde yapılandırmak ve uygulamanızın ana sınıfını yürütmek için pom.xml dosyasını aşağıdaki yapılandırmayı ekleyin ve <plugins> bölümü:

    <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

  1. Aşağıdaki kodu chat_space_create_named.py adlı dosyadaki client_secrets.json içeren dizinle aynı:

    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

  1. Aşağıdaki kodu chat_space_create_named.js adlı dosyadaki Node.js projesini ve client_secrets.json projesini barındıran dizin:

    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ı

  1. Apps Komut Dosyası düzenleyicisinde appsscript.json dosyasını düzenleyin. ve API'yi çağırmak için gereken OAuth kapsamını ekleyin:

      "oauthScopes": [
        "https://www.googleapis.com/auth/chat.spaces.create"
      ]
    
  2. Aşağıdaki kodu ChatSpaceCreateNamed.gs adlı dosyadaki Apps Komut Dosyası projesi:

    /**
     * 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, ve ardından 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ı

Apps Komut Dosyası'nda ChatSpaceCreateNamed.gs dosyasını açın Düzenleyici'yi seçin ve Çalıştır'ı tıklayın.

Bir tarayıcı açılır ve Google Hesabınızda oturum açmanızı ister:

Bir Chat uygulamasını yetkilendirmek için oturum açma.

Şekil 2. Uygulamanın kimliğini doğrulayacak hesabı seçtiğiniz OAuth izin ekranı.

Oturum açtıktan sonra OAuth izin ekranı açılır ve sizden onay isteyen izin verilmelidir.

İzin vermenizin ardından komut dosyası Chat API API-made görünen Chat alanı. Konsolda ayrıntılarını inceleyelim. Alanı bulmak için Alanlar paneline gidin: Google Chat

Örnekteki sorunları giderin

chat_space_create_named.py çalıştırırken şu hata mesajını alabilirsiniz:

Expected a JSON object with a single property for a "web" or "installed" application

Bu hata mesajı, indirdiğiniz client_secrets.json dosyasının "web" veya "installed" ile başlamadığından İndirilen dosyayla kimlik doğrulaması yaptıktan sonra kodunuz doğrulanmazsa erişim jetonunu token.json gibi yeni bir dosyaya kaydederseniz erişim jetonu client_secrets.json adresine yazılır, bu da sonraki izin verebilirsiniz.

Hatayı çözmek için Google Cloud konsolundan istemci gizli anahtarı dosyasını indirin tekrar tıklayın ve yeni dosyayı geçerli dosyanın yerine kaydedin.

  • Uygulamanızın, kapsam dışında kullanıcı jetonlarını kullanmaya devam etmesi gerekiyorsa jetonlar daha sonra yeniden kullanılmak üzere depolanabilir. Böyle durumlarda Uygulamanızın, kullanıcı jetonlarını güvenli bir şekilde işlemesi ve yenilemeyi işlemesi gerekir. jeton iptali ve geçerlilik süresi. Daha fazla bilgi için bkz. OAuth 2.0 En İyi Uygulamalar Kılavuzu.

  • Chat API'nin başka neler yapabileceğini öğrenmek için Chat API referans dokümanları.