Kullanıcıların kimliğini doğrulama ve yetkilendirme (Geliştirici Önizlemesi)

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Bu rehberde, Chat API'ye erişmek için kullanıcıların Google kimlik bilgileriyle OAuth 2.0'ın nasıl kullanılacağı açıklanmaktadır. Öncelikle, OAuth 2.0 istemci kimliği kimlik bilgilerinin nasıl oluşturulacağı konusunda size yol gösterir. Ardından, API'deki kimlik doğrulaması için kimlik bilgilerini kullanan bir komut dosyasının nasıl yazılacağı ve Chat uygulamasının bir Chat alanına nasıl ekleneceği gösterilmektedir.

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. Örneğin, Chat uygulamasında kullanıcı kimlik bilgileri doğrulandıktan ve yetkilendirildikten sonra:

Bir uygulama, kullanıcı kimlik doğrulamasıyla (alan oluşturma gibi) işlem gerçekleştirdiğinde Google Chat, kullanıcılara uygulamayı yetkilendiren kullanıcı adına işlemi gerçekleştiren uygulamanın adını bildiren bir ilişkilendirme mesajı gösterebilir.

Chat uygulamanız kullanıcı verilerine erişmiyorsa veya kullanıcı adına herhangi bir işlem yapmıyorsa bunun yerine uygulama olarak kimlik doğrulamayı kullanabilirsiniz.

Alan yöneticisiyseniz her kullanıcının izin vermesi gerekmeksizin bir uygulamanın hizmet hesabına kullanıcılarınızın verilerine erişim yetkisi vermek için alan genelinde yetki verme izni verebilirsiniz. Alan genelinde yetkiyi yapılandırdıktan sonra kullanıcı hesaplarını taklit etmek için hizmet hesabınızı kullanarak API çağrıları yapabilirsiniz. Kimlik doğrulama için hizmet hesabı kullanılıyor olsa 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şlevler için alan genelinde yetkiyi kullanabilirsiniz.

Chat uygulamalarının ne zaman kimlik doğrulama gerektirdiği ve ne tür bir kimlik doğrulama türünün kullanılacağı hakkında daha fazla bilgi edinmek için Chat API kimlik doğrulamasına ve yetkilendirmesine genel bakıştaki Gerekli kimlik doğrulama türleri başlıklı makaleyi inceleyin.

Ön koşullar

Bu kılavuzdaki örneği çalıştırmak için aşağıdaki ön koşullara ihtiyacınız vardır:

Python

1. Adım: Google istemci kitaplığını yükleyin

Seçtiğiniz dil 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:

Python

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

İstemci kitaplıklarımız tarafından desteklenen herhangi bir dili kullanabilirsiniz.

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österir. Uygulamanızın OAuth izin ekranını yapılandırmak, Google'ın kullanıcılara ve uygulama incelemecilerine neler gösterileceğini tanımlar ve daha sonra yayınlayabilmeniz için uygulamanızı kaydeder.

OAuth 2.0 kullanan tüm uygulamalar için bir 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.

  1. Google Cloud Console'da Menü > API'ler ve Hizmetler > OAuth izin ekranı'na gidin.

    OAuth izin ekranına gitme

  2. Uygulamanızın kullanıcı türünü seçin, ardından Oluştur'u tıklayın.

  3. Uygulama kayıt formunu doldurup Save and Continue (Kaydet ve Devam Et) seçeneğini tıklayın.

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

  5. Uygulamanızın kayıt özetini inceleyin. Değişiklik yapmak için Düzenle'yi veya Kontrol Paneline Dön'ü tıklayın.

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

Son kullanıcı olarak kimliğinizi doğrulamak ve uygulamanızdaki 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 uygulamanın Google OAuth sunucularına tanıtılması 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şturma

OAuth istemci kimliği oluşturmayla ilgili özel talimatlar için aşağıdan uygulama türünüzü seçin:

Web uygulaması

  1. Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.

    Kimlik bilgisi sayfasına 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. Name (Ad) alanına, kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
  5. Uygulamanızla ilgili yetkili URI'lar 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. 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 altında 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 istemci kimliğinizi ve istemci gizli anahtarınızı gösteren OAuth istemcisi tarafından oluşturulan ekran.

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

  7. OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi OAuth 2.0 İstemci Kimlikleri altında görünür.

Android

  1. Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.

    Kimlik bilgisi sayfasına 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" alanına, kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
  5. "Paket adı" alanına AndroidManifest.xml dosyanızın paket adını girin.
  6. "SHA-1 sertifikası dijital parmak izi" alanına oluşturduğunuz SHA-1 sertifikası parmak izini girin.
  7. Oluştur'u tıklayın. Yeni istemci kimliğinizi gösteren OAuth istemcisi tarafından oluşturulan ekran görünür.
  8. OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" altında görünür.

iOS

  1. Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.

    Kimlik bilgisi sayfasına git

  2. Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
  3. Uygulama türü > iOS'i tıklayın.
  4. "Ad" alanına, kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
  5. "Paket Kimliği" alanına uygulamanın Info.plist dosyasında listelenen 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" alanına, Apple tarafından oluşturulup ekibinize atanan 10 karakterli benzersiz dizeyi girin.
  8. Oluştur'u tıklayın. Yeni istemci kimliğinizi ve istemci gizli anahtarınızı gösteren OAuth istemcisi tarafından oluşturulan ekran.
  9. OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" altında görünür.

Chrome uygulaması

  1. Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.

    Kimlik bilgisi sayfasına 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" alanına, kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
  5. "Uygulama Kimliği" 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 istemci kimliğinizi ve istemci gizli anahtarınızı gösteren OAuth istemcisi tarafından oluşturulan ekran.
  7. OK (Tamam) seçeneğini 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 Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.

    Kimlik bilgisi sayfasına 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. Name (Ad) alanına, kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
  5. Oluştur'u tıklayın. Yeni istemci kimliğinizi ve istemci gizli anahtarınızı gösteren OAuth istemcisi tarafından oluşturulan ekran.
  6. OK (Tamam) seçeneğini 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 Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.

    Kimlik bilgisi sayfasına 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ı'nı tıklayın.
  4. "Ad" alanına, kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
  5. Oluştur'u tıklayın. Yeni istemci kimliğinizi ve istemci gizli anahtarınızı gösteren OAuth istemcisi tarafından oluşturulan ekran.
  6. OK (Tamam) seçeneğini 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 Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.

    Kimlik bilgisi sayfasına git

  2. Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
  3. Uygulama türü > Universal Windows Platform (UWP) seçeneğini tıklayın.
  4. "Ad" alanına, kimlik bilgisi için bir ad yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
  5. "Mağaza Kimliği" alanına uygulamanızın 12 karakterlik benzersiz Microsoft Store kimlik 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 istemci kimliğinizi ve istemci gizli anahtarınızı gösteren OAuth istemcisi tarafından oluşturulan ekran.
  7. OK (Tamam) seçeneğini tıklayın. Yeni oluşturulan kimlik bilgisi "OAuth 2.0 İstemci Kimlikleri" altında görünür.

İstemci gizli JSON dosyasını indirin

İstemci gizli dosyası, Chat uygulamanızın kimlik bilgisi sağlarken başvurabileceği OAuth istemci kimliği kimlik bilgilerinin JSON temsilidir.

  1. Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.

    Kimlik bilgisi sayfasına git

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

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

  4. Dosyayı client_secrets.json olarak kaydedin.

4. Adım: API anahtarı oluşturma

Chat API için kullanıcı kimlik doğrulaması, geliştirici önizlemesindeyken kodunuz, Chat API keşif dokümanının geliştirici önizleme sürümünü işaret etmelidir. Google Cloud projesinin API'nin geliştirici önizleme sürümüne erişiminin doğrulanması için projede bir API anahtarı oluşturun ve API çağrısının bir parçası olarak bu anahtarı geçirin.

API anahtarı oluşturmak için:

  1. Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.

    Kimlik bilgisi sayfasına git

  2. Kimlik bilgisi oluştur > API anahtarı'nı tıklayın.
  3. Yeni API anahtarınız gösterilir.
    • API anahtarınızı uygulamanızın kodunda kullanmak üzere kopyalamak için Kopyala'yı tıklayın. API anahtarı, projenizin kimlik bilgilerinin "API anahtarları" bölümünde de bulunur.
    • Gelişmiş ayarları güncellemek ve API anahtarınızın kullanımını sınırlandırmak için Anahtarı kısıtla'yı tıklayın. Daha fazla bilgi için API anahtarı kısıtlamalarını uygulama bölümüne bakın.

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

Aşağıdaki kod, Chat API'sini çağırmak için bir istemci kitaplığı kullanır. OAuth istemci kimliği kimlik bilgilerini kullanarak Chat API ile kimlik doğrular, ardından Chat uygulamasını bir alana ekler.

Aşağıdaki kodu chat_create_membership.py adlı dosyaya, client_secrets.json dizininin bulunduğu dizinde kaydedin:

Python

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.memberships.app"]

def main():
    '''
    Authenticates with Chat API via user credentials,
    then adds the Chat app to a Chat space.
    '''

    # Start with no credentials.
    creds = None

    # Check for the file token.json. If it exists, use it for authentication.
    # The file token.json stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.json'):
        creds = Credentials.from_authorized_user_file('token.json', SCOPES)

    # If there are no valid credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'client_secrets.json', SCOPES)
            creds = flow.run_local_server(port=0)

        # Save the credentials for the next run in a file
        # named token.json.
        with open('token.json', 'w') as token:
            token.write(creds.to_json())

    # Build a service endpoint for Chat API.
    #
    # While user authentication is in developer preview, append the
    # following parameters that let the Python client see a
    # developer preview version of the client library:
    #
    # discoveryServiceUrl—Points to a developer preview version of the Chat
    # API discovery document.
    #
    # developerKey—An API key created inside the developer preview Google
    # Cloud Project. This API key is used to authenticate the Cloud Project's
    # access to a developer preview API.
    key = 'API_KEY'
    url = 'https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW'
    service = build('chat', 'v1', discoveryServiceUrl=url, developerKey=key, credentials=creds)

    # Set the Chat app as the entity that gets added to the space.
    # 'app' is an alias for the Chat app running the script.
    #
    # To specify a user, set:
    #
    # member = {
    #   'member': {
    #     'name':'users/{user}',
    #     'type':'HUMAN'
    #   }
    # }
    member = {
      'member': {
        'name':'users/app',
        'type': 'BOT'
      }
    }

    # Use the service endpoint to call Chat API.
    result = service.spaces().members().create(

      # Replace SPACE with a space name.
      # Obtain the space name from the spaces resource of Chat API,
      # or from a space's URL.
      parent='spaces/SPACE',
        body=member).execute()

    # Prints details about the created membership.
    print(result)

if __name__ == '__main__':
    main()

5. Adım: Örnek komut dosyasını çalıştırın

Örneği çalıştırmak için komut satırından chat_create_membership.py ve client_secrets.json komutlarını içeren dizine gidin, ardından aşağıdaki komutu çalıştırın:

Python

python3 chat_create_membership.py

Bir web tarayıcısı açılır ve Google hesabınıza giriş yapmanız istenir:

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

Oturum açtıktan sonra OAuth izin ekranı görünür ve uygulamaya izin vermenizi ister:

Chat uygulamasına OAuth izin ekranı üzerinden izin verme

İzin vermenizin ardından komut dosyası, Chat API'yi çağırır. Bu API, Chat uygulamasını bir Chat alanına ekleyerek yanıt verir. Konsol, API çağrısının ayrıntılarını yazdırır.

Örnekle ilgili sorunları giderme

"Web" veya "yüklenen" uygulama için tek mülke sahip bir JSON nesnesi bekleniyordu

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

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

Bu hata mesajı, Google Cloud Platform'dan indirdiğiniz client_secrets.json dosyasının "web" veya "installed" mülküyle 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. Bu da sonraki yetkilendirme denemelerinde bu hataya neden olabilir.

Hatayı düzeltmek için istemci gizli dosyasını Google Cloud Console'dan tekrar indirin ve yeni dosyayı geçerli dosyanın yerine kaydedin.

Sonraki adım

Chat API'nin referans belgelerini inceleyerek Chat API'nin başka neler yapabileceğini öğrenin.