Chat uygulamaları ve Google Chat API isteklerinin kimliğini doğrulama ve yetkilendirme

Kimlik doğrulama ve yetkilendirme, sırasıyla kimliği ve kaynaklara erişimi doğrulamak için kullanılan mekanizmalardır. Bu dokümanda, Chat uygulamaları ve Chat API istekleri için kimlik doğrulama ve yetkilendirmenin nasıl işlediği açıklanmaktadır.

Sürece genel bakış

Aşağıdaki şemada, Google Chat için üst düzey kimlik doğrulama ve yetkilendirme adımları gösterilmektedir:

Google Chat'te kimlik doğrulama ve yetkilendirme için üst düzey adımlar
Şekil 1. Google Chat'te kimlik doğrulama ve yetkilendirme için üst düzey adımlar.

  1. Bir Google Cloud projesi yapılandırın, Chat API'yi etkinleştirin ve Chat uygulamanızı yapılandırın: Geliştirme sırasında bir Google Cloud projesi oluşturursunuz. Google Cloud projesinde Chat API'yi etkinleştirir, Chat uygulamanızı yapılandırır ve kimlik doğrulamasını ayarlarsınız. Daha fazla bilgi için Google Workspace'te geliştirme ve Chat uygulaması oluşturma bölümlerine göz atın.

  2. Çağrı API'si: Uygulamanız Chat API'yi çağırdığında kimlik doğrulama bilgilerini Chat API'ye gönderir. Uygulamanız bir hizmet hesabıyla kimlik doğrulaması yapıyorsa kimlik bilgileri, uygulama kodunuzun bir parçası olarak gönderilir. Uygulamanız henüz verilmemiş bir kullanıcı kimlik doğrulamasını kullanarak Chat API'nin çağrılmasını gerektiriyorsa kullanıcıdan oturum açmasını ister.

  3. Kaynak isteme: Uygulamanız, kimlik doğrulamayı ayarlarken belirttiğiniz kapsamlar ile erişim izni ister.

  4. İzin isteme: Uygulamanızda kullanıcı olarak kimlik doğrulanıyorsa Google, OAuth kullanıcı rızası ekranı gösterir. Böylece kullanıcı, uygulamanıza istenen verilere erişim izni verip vermemeye karar verebilir. Hizmet hesabıyla kimlik doğrulamak için kullanıcı izni gerekmez.

  5. Kaynaklar için onaylanmış istek gönderme: Kullanıcı, yetkilendirme kapsamlarına izin verirse uygulamanız kimlik bilgilerini ve kullanıcı onaylı kapsamları bir istek altında gruplandırır. İstek, erişim jetonunu almak için Google yetkilendirme sunucusuna gönderilir.

  6. Google bir erişim jetonu döndürür: Erişim jetonu, izin verilen kapsamların listesini içerir. Döndürülen kapsam listesi istenen kapsamlardan daha kısıtlayıcıysa uygulamanız jetonla sınırlandırılan tüm özellikleri kapatır.

  7. İstenen kaynaklara erişim: Uygulamanız, Chat API'yi çağırmak ve Chat API kaynaklarına erişmek için Google'ın erişim jetonunu kullanır.

  8. Yenileme jetonu alma (isteğe bağlı): Uygulamanızın, tek bir erişim jetonunun kullanım ömründen sonra Google Chat API'ye erişmesi gerekiyorsa yenileme jetonu alabilir. Daha fazla bilgi için Google API'lerine erişmek için OAuth 2.0'ı kullanma bölümüne bakın.

  9. Daha fazla kaynak isteme: Uygulamanız daha fazla erişime ihtiyaç duyuyorsa kullanıcıdan yeni kapsamlar vermesini ister. Bu da erişim jetonu almak için yeni bir istek gönderilmesiyle sonuçlanır (3-6. adımlar).

Chat uygulamaları için kimlik doğrulama gerektiğinde

Sohbet uygulamaları, kullanıcı etkileşimine yanıt olarak veya eşzamansız olarak mesaj gönderebilir. Ayrıca kullanıcılar adına Chat alanı oluşturma veya Chat alanındaki kişilerin listesini alma gibi görevleri de tamamlayabilirler.

Chat uygulamalarının kullanıcı etkileşimlerine yanıt vermek için kimlik doğrulamasına gerek yoktur. Ancak Chat uygulaması, yanıtı işlerken Chat API'yi veya başka bir Google API'yi çağırır.

Chat uygulamaları, eşzamansız mesajlar göndermek veya kullanıcı adına görevler gerçekleştirmek için Chat API'ye RESTful istekler gönderir. Bu işlem için kimlik doğrulama ve yetkilendirme gerekir.

Kullanıcı etkileşimlerine verilen yanıtlar kimlik doğrulaması gerektirmez

Google Chat uygulamalarının etkileşim etkinliklerini almak ve eşzamanlı olarak yanıt vermek için kullanıcı veya Chat uygulaması olarak kimlik doğrulaması yapması gerekmez.

Google Chat uygulamaları, kullanıcılar bir Chat uygulamasıyla etkileşimde bulunduğunda veya Chat uygulamasını çağırdığında, aşağıdakiler de dahil olmak üzere etkileşim etkinliklerini alır:

  • Bir kullanıcı, Chat uygulamasına mesaj gönderdiğinde.
  • Bir kullanıcı bir Chat uygulamasından @bahseder.
  • Bir kullanıcı, Chat uygulamasının eğik çizgi komutlarından birini çağırır.

Aşağıdaki şemada, bir Chat kullanıcısı ile Chat uygulaması arasındaki istek-yanıt sırası gösterilmektedir:

Chat uygulaması etkileşim etkinlikleri için yetkilendirme gerekmez
Şekil 2.Chat uygulaması etkileşim etkinlikleri kimlik doğrulama gerektirmez.

  1. Kullanıcı, Google Chat'teki Chat uygulamasına bir mesaj gönderir.
  2. Google Chat, mesajı uygulamaya yönlendirir.
  3. Uygulama mesajı alır, işler ve Google Chat'e bir yanıt döndürür.
  4. Google Chat, yanıtı kullanıcı için veya bir alanda oluşturur.

Bu sıra, her Chat uygulaması etkileşim etkinliği için tekrarlanır.

Eşzamansız mesajlar için kimlik doğrulama gerekir

Bir Chat uygulaması, kimlik doğrulama ve yetkilendirme gerektiren Chat API'ye istekte bulunduğunda eşzamansız mesajlar ortaya çıkar.

Chat uygulamaları, Chat API'yi çağırarak Google Chat'te mesaj yayınlayabilir veya kullanıcı adına görevleri tamamlayıp verilere erişebilir. Örneğin, bir sunucu kesintisi algılandıktan sonra Chat uygulaması, Chat API'yi çağırarak şunları yapabilir:

  • Kesintiyi araştırmak ve düzeltmek için özel bir Chat alanı oluşturun.
  • Chat alanına kullanıcı ekleyin.
  • Kesinti hakkında ayrıntılı bilgi vermek için Chat alanında bir mesaj yayınlayın.

Aşağıdaki şemada, bir Chat uygulaması ile Chat alanı arasında eşzamansız bir mesaj sırası gösterilmektedir:

Eşzamansız mesajlar için kimlik doğrulama gerekli
Şekil 3. Eşzamansız mesajlar için kimlik doğrulama gerekir.

  1. Bir Chat uygulaması, spaces.messages.create yöntemini kullanarak Chat API'yi çağırarak bir mesaj oluşturur ve HTTP isteğine kullanıcı kimlik bilgilerini ekler.
  2. Google Chat, Chat uygulamasının kimliğini hizmet hesabı veya kullanıcı kimlik bilgileriyle doğrular.
  3. Google Chat, uygulamanın mesajını belirli bir Chat alanına oluşturur.

Chat API kapsamları

Kullanıcılara ve uygulama incelemecilere hangi bilgilerin gösterileceğini tanımlamak için uygulamanızın OAuth kullanıcı rızası ekranını yapılandırıp kapsamları seçin. Daha sonra yayınlamak üzere uygulamanızı kaydedin.

Uygulamanıza verilen erişim düzeyini tanımlamak için yetkilendirme kapsamlarını tanımlayıp bildirmeniz gerekir. Yetkilendirme kapsamı, Google Workspace uygulamasının adını, eriştiği verilere ve erişim düzeyini içeren bir OAuth 2.0 URI dizesidir.

Hassas olmayan kapsamlar

Kapsam kodu Açıklama
https://www.googleapis.com/auth/chat.bot Chat uygulamalarının sohbetleri görüntülemesine ve mesaj göndermesine izin verir. Chat uygulamalarında kullanılabilen tüm özelliklere erişim izni verir.

Hassas kapsamlar

Kapsam kodu Açıklama
https://www.googleapis.com/auth/chat.spaces Chat'te görüşme ve alan oluşturmanın yanı sıra meta verileri (geçmiş ayarları dahil) görüntüleme veya güncelleme.
https://www.googleapis.com/auth/chat.spaces.create Chat'te yeni görüşmeler oluşturabilirsiniz.
https://www.googleapis.com/auth/chat.spaces.readonly Chat'te sohbet ve alanları görüntüleme
https://www.googleapis.com/auth/chat.memberships Chat'teki görüşmelerde üyeleri görüntüleme, ekleme ve kaldırma.
https://www.googleapis.com/auth/chat.memberships.app Google Chat'teki görüşmelere ekleme ve görüşmelerden kaldırma.
https://www.googleapis.com/auth/chat.memberships.readonly Chat görüşmelerindeki üyeleri görüntüleme.
https://www.googleapis.com/auth/chat.messages.create Chat'te mesaj oluşturup gönderin.
https://www.googleapis.com/auth/chat.messages.reactions Chat'te mesajlara tepki ekleyin, tepkileri görüntüleyin ve silin.
https://www.googleapis.com/auth/chat.messages.reactions.create Chat'te bir mesaja tepki ekleyin.
https://www.googleapis.com/auth/chat.messages.reactions.readonly Chat'te bir mesaja verilen tepkileri görüntüleyin.

Kısıtlanmış kapsamlar

Kapsam kodu Açıklama
https://www.googleapis.com/auth/chat.delete Chat'te görüşmeleri ve alanları silip ilişkili dosyalara erişimi kaldırın.
https://www.googleapis.com/auth/chat.messages Mesajları görüntüleyin, oluşturun, gönderin, güncelleyin ve silin. Ayrıca, mesajlara tepki ekleyin, verilen tepkileri görüntüleyin ve silin.
https://www.googleapis.com/auth/chat.messages.readonly Chat'te mesajları ve tepkileri görüntüleyin.

Yukarıdaki tablolarda yer alan kapsamlar, aşağıdaki tanımlara göre hassasiyetlerini gösterir:

Uygulamanız başka herhangi bir Google API'sine erişim gerektiriyorsa bu kapsamları da ekleyebilirsiniz. Google API kapsamları hakkında daha fazla bilgi edinmek için Google API'lerine Erişmek için OAuth 2.0'ı Kullanma bölümüne bakın.

Google Workspace API'leri kapsamları hakkında daha fazla bilgi edinmek için OAuth izin ekranını yapılandırma ve kapsamları seçme başlıklı makaleyi inceleyin.

Gerekli kimlik doğrulama türleri

Chat uygulamalarının, Chat API ile kimlik doğrulaması ve yetkilendirme yapmak için kullanabileceği iki yöntem vardır: kullanıcı kimlik bilgileri veya hizmet hesapları.

Kullanıcı kimlik bilgisi yetkilendirmesi sayesinde Chat uygulaması, kullanıcı verilerine erişebilir ve kullanıcı adına işlemleri tamamlayabilir. OAuth kapsamları, yetkilendirilmiş verileri ve işlemleri belirtir. Ancak bu Chat uygulamaları herkese açık olarak yayınlanamaz. Daha fazla bilgi edinmek için Google Chat uygulamaları yayınlama başlıklı makaleyi inceleyin.

Uygulama yetkilendirmesi sayesinde Chat uygulamaları, hizmet hesabı kimlik bilgilerini kullanarak API'ye uygulama olarak erişir. Uygulama yetkilendirmesi her zaman chat.bot yetkilendirme kapsamını kullanır.

Alan yöneticisiyseniz her kullanıcının izin vermesini gerektirmeden bir uygulamanın hizmet hesabına, kullanıcılarınızın verilerine erişme yetkisi vermek için alan genelinde yetki verebilirsiniz. Alan genelinde yetkiyi yapılandırdıktan sonra, bir kullanıcı hesabının kimliğine bürünmek için hizmet hesabınızı kullanarak API çağrıları yapabilirsiniz. Kimlik doğrulama için bir hizmet hesabı kullanılmasına rağmen, 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şlevler alan genelinde yetkiyi kullanabilir.

Belirli bir API isteği için hangi kimlik bilgisi türünün kullanılacağına karar verirken bazı API yöntemlerinin yalnızca belirli bir kimlik bilgisi türünü desteklediğini unutmayın. Bir API yöntemi her iki kimlik bilgisini de destekliyorsa çağrıda kullanılan kimlik bilgilerinin türü, döndürülen sonucu etkiler:

  • Uygulama yetkilendirmesiyle, yöntemler yalnızca uygulamanın erişebildiği kaynakları döndürür.
  • Kullanıcı yetkilendirmesi sayesinde yöntemler yalnızca kullanıcının Chat kullanıcı arayüzünde erişebildiği kaynakları döndürür.

Örneğin, uygulama yetkilendirmesiyle ListSpaces yöntemi çağrılırsa uygulamanın üyesi olduğu alanların listesi döndürülür. Kullanıcı yetkilendirmesiyle ListSpaces çağrıldığında kullanıcının üyesi olduğu alanların listesi döndürülür. Pratikte uygulamanız, Chat API'yi çağırırken istediğiniz işleve bağlı olarak her iki yetkilendirme türünü de kullanabilir.

Eşzamansız Chat API çağrıları için

Aşağıdaki tabloda Chat API yöntemleri ve desteklenen yetkilendirme kapsamları listelenmiştir:

Yöntem Kullanıcı kimlik doğrulaması desteklenir Uygulama kimlik doğrulaması desteklenir Desteklenen yetkilendirme kapsamları
Alanlar  
Alan oluşturma
  • chat.spaces.create
  • chat.spaces
Alan oluşturma
  • chat.spaces.create
  • chat.spaces
Alan edinin Kullanıcı kimlik doğrulaması kullanıldığında:
  • chat.spaces.readonly
  • chat.spaces
Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Alanları listeleme Kullanıcı kimlik doğrulaması kullanıldığında:
  • chat.spaces.readonly
  • chat.spaces
Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Alan güncelleme
  • chat.spaces
Alan silme
  • chat.delete
Doğrudan mesaj bulma Kullanıcı kimlik doğrulaması kullanıldığında:
  • chat.spaces.readonly
  • chat.spaces
Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Üyeler  
Üye oluşturun
  • chat.memberships
  • chat.memberships.app
Üye olun Kullanıcı kimlik doğrulaması kullanıldığında:
  • chat.memberships.readonly
  • chat.memberships
Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Liste üyeleri Kullanıcı kimlik doğrulaması kullanıldığında:
  • chat.memberships.readonly
  • chat.memberships
Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Üyeyi silme
  • chat.memberships
  • chat.memberships.app
Mesajlar  
Mesaj oluşturma Kullanıcı kimlik doğrulaması kullanıldığında:
  • chat.messages.create
  • chat.messages
Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Mesaj alma Kullanıcı kimlik doğrulaması kullanıldığında:
  • chat.messages.readonly
  • chat.messages
Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Mesajları listeleme
  • chat.messages.readonly
  • chat.messages
Mesaj güncelleme Kullanıcı kimlik doğrulaması kullanıldığında:
  • chat.messages
Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Mesaj silme Kullanıcı kimlik doğrulaması kullanıldığında:
  • chat.messages
Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Tepkiler  
Tepki oluşturma
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
Tepkileri listeleme
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
Tepkiyi silme
  • chat.messages.reactions
  • chat.messages
Medya ve ekler  
Medyayı dosya eki olarak yükleme
  • chat.messages.create
  • chat.messages
Medyayı indirin Kullanıcı kimlik doğrulaması kullanıldığında:
  • chat.messages.readonly
  • chat.messages
Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Mesaj eki alma
  • chat.bot

Chat uygulaması etkileşim etkinlikleri için

Aşağıdaki tabloda, kullanıcıların Chat uygulamalarıyla yaygın olarak etkileşim kurma yöntemleri ve kimlik doğrulamanın gerekli olup olmadığı veya desteklenip desteklenmediği listelenmiştir:

Senaryo Kimlik doğrulama gerekmez Kullanıcı kimlik doğrulaması desteklenir Uygulama kimlik doğrulaması desteklenir
Şuradan mesaj al:
Chat uygulaması etkileşim etkinlikleri
Apps Komut Dosyası geri çağırmaları
Google Cloud Pub/Sub
Mesajları yanıtlama:
Chat uygulaması etkileşim etkinliği kullanılarak eşzamanlı olarak
Eşzamanlı olarak, bir Apps Komut Dosyası geri çağırma döndürülen değeri kullanarak
Yeni ileti gönder:
Gelen webhook'larla