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:
- Chat alanları oluşturun.
- Chat alanlarına ve grup görüşmelerine kullanıcı ekleyin.
- Diğer Workspace API'lerinde kullanıcı verileriyle çalışın:
- Google Takvim'de etkinlikler oluşturun.
- Bir Google E-Tablosundaki öğeleri günlüğe kaydedin.
- Gmail ile e-posta gönderin.
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
- Python 3.6 veya sonraki sürümler
- pip paket yönetimi aracı
- Google Chat'e erişimi olan bir Google Workspace hesabı.
- Chat API'nin etkin ve yapılandırılmış olduğu bir Google Cloud projesi. Proje oluşturmak ve API'yi etkinleştirmek için Proje oluşturma ve API'yi etkinleştirme başlıklı makaleyi inceleyin.
- Google Cloud Console'daki Chat API yapılandırma sayfasında yapılandırılmış Chat uygulaması. Chat uygulaması oluşturmak ve yapılandırmak için Cloud Functions ile Google Chat uygulaması oluşturma başlıklı makaleyi inceleyin.
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.
2. 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ö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.
Google Cloud Console'da 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 Save and Continue (Kaydet ve Devam Et) seçeneğini 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.
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ı
- Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
- Uygulama türü > Web uygulaması'nı tıklayın.
- Name (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'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.
- 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.
- 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
- Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgisi 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ızın paket adını girin. - "SHA-1 sertifikası dijital parmak izi" alanına oluşturduğunuz SHA-1 sertifikası parmak izini girin.
- Oluştur'u tıklayın. Yeni istemci kimliğinizi gösteren OAuth istemcisi tarafından oluşturulan ekran görünür.
- 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
- Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgisi 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 uygulamanın
Info.plist
dosyasında listelenen paket tanımlayıcısını 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şturulup ekibinize atanan 10 karakterli benzersiz dizeyi girin.
- 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.
- 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ı
- Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgisi 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 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.
- 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.
- 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ı
- Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
- Uygulama türü > Masaüstü uygulaması'nı tıklayın.
- Name (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 istemci kimliğinizi ve istemci gizli anahtarınızı gösteren OAuth istemcisi tarafından oluşturulan ekran.
- 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ı
- Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgisi 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 istemci kimliğinizi ve istemci gizli anahtarınızı gösteren OAuth istemcisi tarafından oluşturulan ekran.
- 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)
- Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik Bilgisi Oluştur > OAuth istemci kimliği'ni tıklayın.
- Uygulama türü > Universal Windows Platform (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 kimlik 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 istemci kimliğinizi ve istemci gizli anahtarınızı gösteren OAuth istemcisi tarafından oluşturulan ekran.
- 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.
Google Cloud Console'da 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.
JSON'ı indir'i tıklayın.
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:
- Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik bilgileri'ne gidin.
- Kimlik bilgisi oluştur > API anahtarı'nı tıklayın.
- 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:
Oturum açtıktan sonra OAuth izin ekranı görünür ve uygulamaya izin vermenizi ister:
İ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.