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 kimlik doğrulaması ve yetkilendirmesi için üst düzey adımlar
Şekil 1. Google Chat kimlik doğrulaması ve yetkilendirmesi 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ğrulamayı ayarlarsınız. Daha fazla bilgi için Google Workspace'te uygulama geliştirme ve Chat uygulaması geliştirme makalelerine göz atın.

  2. Call Chat API: Uygulamanız Chat API'yi çağırdığında, kimlik doğrulama kimlik bilgilerini Chat API'ye gönderir. Uygulamanız bir hizmet hesabıyla kimlik doğrulaması yaparsa kimlik bilgileri uygulama kodunun bir parçası olarak gönderilir. Uygulamanız, henüz verilmemiş bir kullanıcının 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 kapsamlarla erişim izni ister.

  4. İzin isteyin: Uygulamanızın kimliği kullanıcı olarak doğrulanıyorsa Google bir OAuth izin ekranı görüntüler. Böylece kullanıcı, uygulamanızın istenen verilere erişim izni verip vermeyeceğini belirleyebilir. Hizmet hesabıyla kimlik doğrulama için kullanıcı izni gerekmez.

  5. Kaynaklar için onaylanmış istek gönderin: Kullanıcı, yetkilendirme kapsamlarına izin verirse uygulamanız, kimlik bilgilerini ve kullanıcı tarafından onaylanan kapsamları bir istek halinde paketler. İstek, erişim jetonu almak için Google yetkilendirme sunucusuna gönderilir.

  6. Google bir erişim jetonu döndürür: Erişim jetonu, verilen kapsamların listesini içerir. Döndürülen kapsam listesi, istenen kapsamlardan daha kısıtlayıcıysa uygulamanız jeton tarafından sınırlandırılan tüm özellikleri devre dışı bırakı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 geçerlilik süresi bittikten sonra Google Chat API'ye erişmesi gerekiyorsa yenileme jetonu alabilir. Daha fazla bilgiyi Google API'lerine erişmek için OAuth 2.0'ı kullanma başlıklı makalede bulabilirsiniz.

  9. Daha fazla kaynak isteme: Uygulamanızın daha fazla erişime ihtiyacı varsa kullanıcıdan yeni kapsamlar vermesini ister. Bu da, erişim jetonu almak için yeni bir istekle sonuçlanır (3-6. adımlar).

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

Chat uygulamaları, kullanıcı etkileşimine yanıt olarak veya eşzamansız olarak mesaj gönderebilir. Ayrıca, kullanıcı adına çeşitli görevleri (ör. Chat alanı oluşturma veya Chat alanındaki kullanıcıların listesini alma) tamamlayabilirler.

Chat uygulaması, yanıtı işlerken Chat API'yi veya başka bir Google API'sini çağırmadığı sürece, Chat uygulamaları kullanıcı etkileşimine yanıt vermek için kimlik doğrulama gerektirmez.

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

Kullanıcı etkileşimlerine verilen yanıtlar için kimlik doğrulama gerekmez

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

Google Chat uygulamaları, bir kullanıcı Chat uygulamasıyla etkileşime geçtiğinde veya Chat uygulamasını çağırdığında aşağıdakiler de dahil olmak üzere etkileşim etkinlikleri alır:

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

Aşağıdaki şemada, 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 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

Eşzamansız mesajlar, bir Chat uygulaması Chat API'ye istekte bulunduğunda gerçekleşir. Bu işlem için kimlik doğrulama ve yetkilendirme gerekir.

Chat uygulamaları, Chat API'yi çağırarak Google Chat'e mesaj gönderebilir veya kullanıcı adına görevleri tamamlayıp verilere erişebilir. Örneğin, 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.
  • Kesintiyle ilgili ayrıntıları paylaşmak için Chat alanında bir mesaj yayınlayın.

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

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

  1. Bir Chat uygulamaları, 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 incelemecilerine hangi bilgilerin gösterileceğini tanımlamak ve daha sonra yayınlayabilmeniz için uygulamanızı kaydetmek için OAuth izin ekranını yapılandırın ve kapsamları seçin.

Uygulamanıza verilen erişim düzeyini tanımlamak için yetkilendirme kapsamlarını tanımlayıp beyan etmeniz gerekir. Yetkilendirme kapsamı; Google Workspace uygulamasının adını, eriştiği verilerin türünü 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.bot kapsamı yalnızca hizmet hesaplarını destekler. Bu kapsamı kullanarak kullanıcı kimlik bilgileriyle veya alan genelinde yetki ile kimlik doğrulaması yapamazsınız.

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üşmeler ve alanlar oluşturup meta verileri (geçmiş ayarları ve erişim ayarları dahil) görün veya düzenleyin.
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 sohbeti ve alanları görüntüleyin.
https://www.googleapis.com/auth/chat.memberships Chat'teki görüşmelerde üyeleri görüntüleme, ekleme, güncelleme veya kaldırma.
https://www.googleapis.com/auth/chat.memberships.app Kendisini 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şturma ve gönderme.
https://www.googleapis.com/auth/chat.messages.reactions Chat'te mesajlara tepkileri görüntüleyin, ekleyin ve silin.
https://www.googleapis.com/auth/chat.messages.reactions.create Chat'te bir mesaja tepki ekleyebilirsiniz.
https://www.googleapis.com/auth/chat.messages.reactions.readonly Chat'te bir mesaja verilen tepkileri görüntüleyin.
https://www.googleapis.com/auth/chat.users.readstate Chat görüşmelerinin son okunma zamanını görüntüleme ve değiştirme.
https://www.googleapis.com/auth/chat.users.readstate.readonly Chat görüşmelerinin son okunma zamanını görüntüleyin.
https://www.googleapis.com/auth/chat.admin.spaces.readonly Chat'te yöneticinin alanına ait sohbetleri ve alanları görüntüleme.
https://www.googleapis.com/auth/chat.admin.spaces Chat'te yöneticinin alanına ait sohbetleri ve alanları görüntüleme veya düzenleme.
https://www.googleapis.com/auth/chat.admin.memberships.readonly Chat'te yönetici alanına ait görüşmelerdeki üyeleri ve yöneticileri görüntüleme.
https://www.googleapis.com/auth/chat.admin.memberships Chat'te yöneticinin alanına ait görüşmelerdeki üyeleri ve yöneticileri görüntüleme, ekleme, güncelleme ve kaldırma.

Kısıtlanmış kapsamlar

Kapsam kodu Açıklama
https://www.googleapis.com/auth/chat.delete Chat'te görüşmeleri ve alanları silin ve ilişkili dosyalara erişimi kaldırın.
https://www.googleapis.com/auth/chat.import Alanları, mesajları ve üyelikleri Chat'e aktarın. Daha fazla bilgi için Chat uygulamalarını verileri içe aktarması için yetkilendirme başlıklı makaleyi inceleyin.
https://www.googleapis.com/auth/chat.messages Mesajları görüntüleme, oluşturma, gönderme, güncelleme ve silme; mesajlara tepki ekleme, tepkileri görüntüleme ve silme.
https://www.googleapis.com/auth/chat.messages.readonly Chat'te mesajları ve tepkileri görüntüleyin.
https://www.googleapis.com/auth/chat.admin.delete Yöneticinin alanına ait görüşmeleri ve alanları silin ve Chat'teki ilişkili dosyalara erişimi kaldırın.

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

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

Google Workspace API'lerinin 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ı, Chat API ile kimlik doğrulama ve yetkilendirme için iki yöntemden yararlanabilir: kullanıcı kimlik bilgileri veya hizmet hesapları.

Kullanıcı kimlik bilgisi yetkilendirmesi sayesinde Chat uygulamaları, kullanıcı verilerine erişebilir ve kullanıcı adına işlemleri tamamlayabilir. OAuth kapsamları, yetkilendirilen verileri ve işlemleri belirtir.

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

Belirli bir API isteği için ne tür kimlik bilgilerinin 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 yetkilendirmesi ile, bu yöntemler yalnızca uygulamanın erişebileceği kaynakları döndürür.
  • Kullanıcı yetkilendirmesiyle bu yöntemler yalnızca kullanıcının Chat kullanıcı arayüzünde erişebileceği kaynakları döndürür.

Örneğin, uygulama yetkilendirmesiyle ListSpaces yönteminin çağrılması, uygulamanın üyesi olduğu alanların listesini döndürür. Kullanıcı yetkilendirmesiyle ListSpaces çağrısı yapı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ı listelenmektedir:

Yöntem Kullanıcı kimlik doğrulaması desteklenir Uygulama kimlik doğrulaması desteklenir Desteklenen yetkilendirme kapsamları
Alanlar  
Alan oluşturma Kullanıcı kimlik doğrulaması etkinken:
  • chat.spaces.create
  • chat.spaces
  • chat.import
Alan oluşturma Kullanıcı kimlik doğrulaması etkinken:
  • chat.spaces.create
  • chat.spaces
Alan satın alma Kullanıcı kimlik doğrulaması etkinken:
  • chat.spaces.readonly
  • chat.spaces
Uygulama kimlik doğrulaması ile:
  • chat.bot
Yönetici ayrıcalıklarını kullanarak kullanıcı kimlik doğrulaması yapıldığında:
  • chat.admin.spaces.readonly
Alanları listeleme Kullanıcı kimlik doğrulaması etkinken:
  • chat.spaces.readonly
  • chat.spaces
Uygulama kimlik doğrulaması ile:
  • chat.bot
Alan arayın Yönetici ayrıcalıklarını kullanarak kullanıcı kimlik doğrulaması yapıldığında:
  • chat.admin.spaces.readonly
Alan güncelleme Kullanıcı kimlik doğrulaması etkinken:
  • chat.spaces
  • chat.import
Yönetici ayrıcalıklarını kullanarak kullanıcı kimlik doğrulaması yapıldığında:
  • chat.admin.spaces
Alan silme Kullanıcı kimlik doğrulaması etkinken:
  • chat.delete
  • chat.import
Yönetici ayrıcalıklarını kullanarak kullanıcı kimlik doğrulaması yapıldığında:
  • chat.admin.delete
Alan için içe aktarma işlemini tamamlama Kullanıcı kimlik doğrulaması etkinken:
  • chat.import
Doğrudan mesajları bulma Kullanıcı kimlik doğrulaması etkinken:
  • chat.spaces.readonly
  • chat.spaces
Uygulama kimlik doğrulaması ile:
  • chat.bot
Üyeler  
Üye oluşturma Kullanıcı kimlik doğrulaması etkinken:
  • chat.memberships
  • chat.memberships.app
  • chat.import
Yönetici ayrıcalıklarını kullanarak kullanıcı kimlik doğrulaması yapıldığında:
  • chat.admin.memberships
Üye olun Kullanıcı kimlik doğrulaması etkinken:
  • chat.memberships.readonly
  • chat.memberships
Uygulama kimlik doğrulaması ile:
  • chat.bot
Yönetici ayrıcalıklarını kullanarak kullanıcı kimlik doğrulaması yapıldığında:
  • chat.admin.memberships.readonly
Liste üyeleri Kullanıcı kimlik doğrulaması etkinken:
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
Uygulama kimlik doğrulaması ile:
  • chat.bot
Yönetici ayrıcalıklarını kullanarak kullanıcı kimlik doğrulaması yapıldığında:
  • chat.admin.memberships.readonly
Üye silme Kullanıcı kimlik doğrulaması etkinken:
  • chat.memberships
  • chat.memberships.app
  • chat.import
Yönetici ayrıcalıklarını kullanarak kullanıcı kimlik doğrulaması yapıldığında:
  • chat.admin.memberships
Üye güncelleme Kullanıcı kimlik doğrulaması etkinken:
  • chat.memberships
  • chat.import
Yönetici ayrıcalıklarını kullanarak kullanıcı kimlik doğrulaması yapıldığında:
  • chat.admin.memberships
Mesajlar  
Mesaj oluşturma Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages.create
  • chat.messages
  • chat.import
Uygulama kimlik doğrulaması ile:
  • chat.bot
Mesaj alma Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages.readonly
  • chat.messages
Uygulama kimlik doğrulaması ile:
  • chat.bot
Liste mesajları Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages.readonly
  • chat.messages
  • chat.import
Mesaj güncelleme Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages
  • chat.import
Uygulama kimlik doğrulaması ile:
  • chat.bot
Mesaj silme Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages
  • chat.import
Uygulama kimlik doğrulaması ile:
  • chat.bot
Tepkiler  
Tepki oluşturma Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
  • chat.import
Tepkileri listeleme Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
Tepkiyi silme Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages.reactions
  • chat.messages
  • chat.import
Medya ve ekler  
Medyayı dosya eki olarak yükleme Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages.create
  • chat.messages
  • chat.import
Medyayı indirin Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages.readonly
  • chat.messages
Uygulama kimlik doğrulaması ile:
  • chat.bot
Mesaj eki alma Uygulama kimlik doğrulaması etkinken:
  • chat.bot
Kullanıcı okuma durumları
Kullanıcının alan okuma durumunu öğrenme Kullanıcı kimlik doğrulaması etkinken:
  • chat.users.readstate
  • chat.users.readstate.readonly
Kullanıcının alanın okunma durumunu güncelleme Kullanıcı kimlik doğrulaması etkinken:
  • chat.users.readstate
Bir kullanıcının ileti dizisi okunma durumunu alma Kullanıcı kimlik doğrulaması etkinken:
  • chat.users.readstate
  • chat.users.readstate.readonly
Alan etkinlikleri
Alan etkinlikleri alın Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages
  • chat.messages.readonly
  • chat.messages.reactions
  • chat.messages.reactions.readonly
  • chat.memberships
  • chat.memberships.readonly
  • chat.spaces
  • chat.spaces.readonly
Alan etkinliklerini listeleme Kullanıcı kimlik doğrulaması etkinken:
  • chat.messages
  • chat.messages.readonly
  • chat.messages.reactions
  • chat.messages.reactions.readonly
  • chat.memberships
  • chat.memberships.readonly
  • chat.spaces
  • chat.spaces.readonly

Chat uygulaması etkileşim etkinlikleri için

Aşağıdaki tabloda, kullanıcıların Chat uygulamalarıyla etkileşime geçtiği yaygın yöntemler ve kimlik doğrulamanın zorunlu olup olmadığı veya desteklenip desteklenmediği açıklanmıştır:

Senaryo Kimlik doğrulama gerekmez. Kullanıcı kimlik doğrulaması desteklenir Uygulama kimlik doğrulaması desteklenir
Şu kişilerden mesaj al:
Chat uygulaması etkileşimi etkinlikleri
Apps Komut Dosyası geri çağırma işlevleri
Google Cloud Pub/Sub
Mesajları yanıtlama:
Chat uygulaması etkileşim etkinliğini kullanarak eşzamanlı olarak
Eşzamanlı olarak, bir Apps Komut Dosyası geri çağırması kullanıldığında döndürülen değer
Yeni mesaj gönderme:
Gelen webhook'lar dahil