Görüşme İşlemleri 13 Haziran 2023'te kullanımdan kaldırılacaktır. Daha fazla bilgi için Görüşme İşlemlerinin kullanımdan kaldırılması sayfasına göz atın.

OAuth tabanlı Google ile Oturum Açma "Basitleştirilmiş" bağlantısı ile hesap bağlama

OAuth tabanlı Google ile Oturum Açma "Basitleştirilmiş" bağlantı türü, Google ile Oturum Açma'yı OAuth tabanlı hesap bağlamanın üzerine ekler. Bu, Google kullanıcıları için sorunsuz bir ses tabanlı bağlantı sağlarken Google dışı bir kimlikle hizmetinize kaydolan kullanıcılar için hesap bağlama imkanı sunar.

Bu bağlantı türü, kullanıcının Google profil bilgilerinin sisteminizde mevcut olup olmadığını kontrol etmenizi sağlayan Google ile Oturum Açma ile başlar. Kullanıcının bilgileri sisteminizde bulunmazsa standart bir OAuth akışı başlar. Kullanıcı, Google profil bilgileriyle yeni bir hesap oluşturmayı da seçebilir.

Şekil 1: İşleminiz kullanıcının Google profiline eriştikten sonra kimlik doğrulama sisteminizde kullanıcı için bir eşleşme bulmak üzere bunu kullanabilirsiniz.

Basitleştirilmiş bağlantı türüyle hesap bağlama işlemi gerçekleştirmek için aşağıdaki genel adımları uygulayın:

  1. İlk olarak, kullanıcıdan Google profiline erişmesine izin vermesini isteyin.
  2. Kullanıcıyı tanımlamak için profilindeki bilgileri kullanın.
  3. Kimlik doğrulama sisteminizde Google kullanıcısı için bir eşleşme bulamazsanız akış, Actions projenizde Actions projenizi sesli olarak mı yoksa sadece web sitenizde mi oluşturmak için yapılandırdığınıza bağlı olarak devam eder.
    • Sesle hesap oluşturmaya izin verirseniz Google'dan alınan kimlik jetonunu doğrulayın. Daha sonra, kimlik jetonunda yer alan profil bilgilerine göre bir kullanıcı oluşturabilirsiniz.
    • Sesle hesap oluşturmaya izin vermezseniz kullanıcı yetkilendirme sayfanızı yükleyebileceği ve kullanıcı oluşturma akışını tamamlayabileceği bir tarayıcıya aktarılır.
Sesle hesap oluşturmaya izin verirseniz ve kimlik doğrulama sisteminizde Google profili için eşleşme bulamıyorsanız Google'dan alınan kimlik jetonunu doğrulamanız gerekir. Daha sonra, kimlik jetonunda yer alan profil bilgilerine göre kullanıcı oluşturabilirsiniz.
            Sesli olarak kullanıcı hesabı oluşturulmasına izin vermezseniz kullanıcı yetkilendirme sayfanızı yükleyebileceği ve akışı tamamlayabileceği bir tarayıcıya aktarılır.
Şekil 2. Bir kullanıcının bilgileri sisteminizde bulunamadığında OAuth ve Google ile Oturum Açma akışının görsel temsili.

Sesle hesap oluşturma desteği

Sesli olarak kullanıcı hesabı oluşturma işlemine izin verirseniz Asistan, kullanıcıya aşağıdakileri yapmak isteyip istemediğini sorar:

  • Google Hesabı bilgilerini kullanarak sisteminizde yeni bir hesap oluşturun veya
  • Mevcut bir Google dışı hesabınız varsa kimlik doğrulama sisteminizde farklı bir hesapla oturum açın.

Hesap oluşturma akışıyla ilgili sorunları en aza indirmek için hesap oluşturmaya sesli olarak izin verilmesi önerilir. Kullanıcının yalnızca mevcut bir Google dışı hesabı kullanarak oturum açmak istiyorsa ses akışından ayrılması gerekir.

Sesle hesap oluşturmaya izin verme

Sesli olarak kullanıcı hesabı oluşturulmasına izin vermediyseniz Asistan, kullanıcı kimlik doğrulaması için sağladığınız web sitesinin URL'sini açar. Etkileşim, ekranı olmayan bir cihazda gerçekleşiyorsa Asistan, hesap bağlama akışına devam etmek için kullanıcıyı bir telefona yönlendirir.

Aşağıdaki durumlarda, oluşturma işlemine izin verilmemesi önerilir:

  • Google dışı hesapları olan kullanıcıların yeni bir kullanıcı hesabı oluşturmasına izin vermek ve bunun yerine, kimlik doğrulama sisteminizdeki mevcut kullanıcı hesaplarına bağlantı oluşturmasını istemezsiniz. Örneğin, bir bağlılık programı sunuyorsanız, kullanıcının mevcut hesabında alınan puanları kaybetmediğinden emin olmak isteyebilirsiniz.

  • Hesap oluşturma akışı üzerinde tam kontrole sahip olmanız gerekir. Örneğin, hesap oluşturma işlemi sırasında kullanıcıya hizmet şartları göstermeniz gerekiyorsa oluşturma işlemine izin vermeebilirsiniz.

OAuth tabanlı Google ile Oturum Açma "Basitleştirilmiş" bağlantısı uygulama

Hesaplar, endüstri standardı OAuth 2.0 akışlarına bağlıdır. Actions on Google, dolaylı ve yetkilendirme kodu akışlarını destekler.

Dolaylı kod akışında Google, yetkilendirme uç noktanızı kullanıcının tarayıcısında açar. Başarılı bir şekilde oturum açtıktan sonra Google'a uzun ömürlü bir erişim jetonu döndürürsünüz. Bu erişim jetonu artık Asistan'dan Action'ınıza gönderilen her isteğe dahil edilir.

Yetkilendirme kodu akışında iki uç noktaya ihtiyacınız vardır:

  • Oturum açma kullanıcı arayüzünü henüz oturum açmamış kullanıcılara sunmaktan ve istenen erişime kısa süreli bir yetkilendirme kodu biçiminde izin kaydetmekten sorumlu olan yetkilendirme uç noktası.
  • İki tür exchange'den sorumlu olan jeton değişimi uç noktası:
    1. Yetkilendirme kodunu uzun ömürlü yenileme jetonu ve kısa ömürlü erişim jetonu ile değiştirir. Bu değişim, kullanıcı hesap bağlama akışından geçer.
    2. Kısa ömürlü bir erişim jetonu için uzun süreli yenileme jetonunu değiştirir. Bu exchange, Google'ın süresi dolmuş olduğundan yeni bir erişim jetonuna ihtiyacı olduğunda gerçekleşir.

Örtülü akış kullanılarak verilen erişim jetonlarının geçerlilik süresinin hiçbir zaman dolmaması, Google'ın örtülü akışla kullanılması nedeniyle kullanıcının hesabını tekrar bağlamayı zorunlu kıldığı için Google, örtülü akış akışının uygulanmasını önerir. Güvenlik nedeniyle jetonun süresinin dolması gerekiyorsa kimlik doğrulama kodu akışını kullanmanız önerilir.

Projeyi yapılandırma

Projenizi kolaylaştırılmış bağlantıyı kullanacak şekilde yapılandırmak için aşağıdaki adımları uygulayın:

  1. Actions konsolunu açın ve kullanmak istediğiniz projeyi seçin.
  2. Geliştirme sekmesini tıklayın ve Hesap bağlama'yı seçin.
  3. Hesap bağlama seçeneğinin yanındaki anahtarı etkinleştirin.
  4. Hesap oluşturma bölümünde Evet'i seçin.

  5. Bağlantı türü bölümünde OAuth ve Google ile Oturum Açma ve Dolaylı'yı seçin.

  6. İstemci Bilgileri bölümünde aşağıdakileri yapın:

    • Google'dan gelen istekleri tanımlamak için Actions by Google tarafından verilen İstemci Kimliği'ne değer atayın.
    • Yetkilendirme ve Jeton Exchange uç noktalarınızın URL'lerini ekleyin.
  7. Kaydet'i tıklayın.

OAuth sunucunuzu Uygulama

OAuth 2.0 dolaylı akışını desteklemek için hizmetiniz, yetkilendirme uç noktasının HTTPS tarafından kullanılmasını sağlar. Bu uç nokta, veri erişimi için kullanıcıların kimliğini doğrulamaktan ve kullanıcılardan izin almaktan sorumludur. Yetkilendirme uç noktası, kullanıcılarınıza henüz oturum açmamış olan bir oturum açma kullanıcı arayüzü sunar ve istenen erişim iznini kaydeder.

İşleminizin hizmetinizin yetkili API'lerinden birini çağırması gerektiğinde Google, kullanıcılarınızdan bu API'leri kendi adlarına çağırmak için bu uç noktayı kullanır.

Google tarafından başlatılan tipik bir OAuth 2.0 dolaylı akış oturumunda aşağıdaki akış geçerlidir:

  1. Google, yetkilendirme uç noktanızı kullanıcının tarayıcısında açar. Kullanıcı daha önce oturum açmamışsa oturum açar ve henüz izin vermemişse Google'a, API'nizle verilerine erişmesine izin verir.
  2. Hizmetiniz bir erişim jetonu oluşturur ve kullanıcının tarayıcısını, isteğe eklenmiş erişim jetonuyla Google'a tekrar yönlendirerek Google'a döndürür.
  3. Google, hizmetinizin API'lerini çağırır ve her isteğe erişim jetonunu ekler. Hizmetiniz, erişim jetonunun Google'a API'ye erişim yetkisi verdiğini doğrular ve API çağrısını tamamlar.

Yetkilendirme isteklerini işleme

İşleminizin OAuth 2.0 dolaylı akışı üzerinden hesap bağlama işlemi yapması gerektiğinde Google, aşağıdaki parametreleri içeren bir istekle kullanıcıyı yetkilendirme uç noktasına gönderir:

Yetkilendirme uç noktası parametreleri
client_id Google'a atadığınız istemci kimliği.
redirect_uri Bu isteğe yanıt göndermek için kullandığınız URL.
state Yönlendirme URI'sinde değişmeden Google'a geri verilen bir muhasebe değeri.
response_type Yanıtta döndürülecek değerin türü. OAuth 2.0 dolaylı akışı için yanıt türü her zaman token'dir.

Örneğin, yetkilendirme uç noktanız https://myservice.example.com/auth adresinde mevcutsa bir istek aşağıdaki gibi görünebilir:

GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token

Yetkilendirme uç noktanızın oturum açma isteklerini işlemesi için aşağıdaki adımları uygulayın:

  1. İstenmeyen veya yanlış yapılandırılmış istemci uygulamalarına erişim izni vermemek için client_id ve redirect_uri değerlerini doğrulayın:

    • client_id değerinin Google'a atadığınız istemci kimliğiyle eşleştiğinden emin olun.
    • redirect_uri parametresi tarafından belirtilen URL'nin aşağıdaki biçimde olduğundan emin olun:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      YOUR_PROJECT_ID, Actions Console'un Proje ayarları sayfasında bulunan kimliktir.
  2. Kullanıcının hizmetinizde oturum açıp açmadığını kontrol edin. Kullanıcı oturum açmadıysa hizmetinizin oturum açma veya kaydolma akışını tamamlayın.

  3. Google'ın API'nize erişmek için kullanacağı bir erişim jetonu oluşturun. Erişim jetonu herhangi bir dize değeri olabilir ancak jetonun kullanıcıyı ve istemciyi benzersiz olarak temsil etmesi ve tahmin edilmesi mümkün olmaması gerekir.

  4. Kullanıcının tarayıcısını redirect_uri parametresi tarafından belirtilen URL'ye yönlendiren bir HTTP yanıtı gönderin. Aşağıdaki tüm parametreleri URL parçasına ekleyin:

    • access_token: Az önce oluşturduğunuz erişim jetonu
    • token_type: bearer dizesi
    • state: Orijinal istekteki değiştirilmemiş durum değeri: Görüntülenen URL aşağıdaki gibi görünür:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING

Google'ın OAuth 2.0 yönlendirme işleyicisi, erişim jetonunu alır ve state değerinin değişmediğini onaylar. Google, hizmetiniz için bir erişim jetonu aldıktan sonra, jetonu AppRequest'in bir parçası olarak İşleminize yapılan sonraki çağrılara ekler.

Otomatik bağlama işlemini yönetin

Kullanıcı, Action'ınıza Google profiline erişmesi için izin verdikten sonra Google, Google kullanıcısının kimliğiyle ilgili imzalı bir onaylama içeren bir istek gönderir. İddia, kullanıcının Google Hesabı kimliğini, adını ve e-posta adresini içeren bilgileri içerir. Projeniz için yapılandırılan jeton değişimi uç noktası bu isteği işler.

İlgili Google hesabı kimlik doğrulama sisteminizde zaten varsa jeton değişimi uç noktanız kullanıcı için bir jeton döndürür. Google hesabı mevcut bir kullanıcıyla eşleşmezse jeton exchange uç noktanız bir user_not_found hatası döndürür.

İstek aşağıdaki biçimdedir:

POST /token HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&intent=get&assertion=JWT&consent_code=CONSENT_CODE&scope=SCOPES

Jeton değişimi uç noktanız aşağıdaki parametreleri işleyebilmelidir:

Jeton uç noktası parametreleri
grant_type Değiştirilen jetonun türü. Bu isteklerde bu parametre urn:ietf:params:oauth:grant-type:jwt-bearer değerine sahiptir.
intent Bu istekler için bu parametrenin değeri "get"tir.
assertion Google kullanıcı kimliğinin imzalı bir onaylamasını sağlayan JSON Web Jetonu (JWT). JWT, kullanıcının Google Hesabı kimliğini, adını ve e-posta adresini içerir.
consent_code İsteğe bağlı: Mevcut olduğunda, kullanıcının İşleminizin belirtilen kapsamlara erişmesine izin verdiğini belirten tek kullanımlık bir kod.
scope İsteğe bağlı: Google'dan kullanıcılardan istekte bulunmak için yapılandırdığınız tüm kapsamlar.

Jeton takas uç noktanız, bağlantı isteği aldığında aşağıdakileri yapmalıdır:

JWT onayını doğrulama ve kodunu çözme

JWT onayını doğrulamak ve kodunu çözmek için diliniz için JWT kod çözme kitaplığı kullanabilirsiniz. Jetonun imzasını doğrulamak için Google'ın ortak anahtarlarını (JWK veya PEM biçiminde kullanılabilir) kullanın.

Kodu çözüldüğünde JWT onayı aşağıdaki örneğe benzer:

{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The assertion's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID
  "iat": 233366400,         // Unix timestamp of the assertion's creation time
  "exp": 233370000,         // Unix timestamp of the assertion's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}

Jetonun imzasını doğrulamanın yanı sıra, onaylamayı yapanın (iss alanı) https://accounts.google.com olduğunu ve kitlenin (aud alanı) İşleminize atanan istemci kimliği olduğunu doğrulayın.

Kimlik doğrulama sisteminizde Google hesabının zaten mevcut olup olmadığını kontrol etme

Aşağıdaki koşullardan birinin doğru olup olmadığını kontrol edin:

  • Onayın sub alanında bulunan Google Hesabı kimliği kullanıcı veritabanındadır.
  • Onaydaki e-posta adresi, kullanıcı veritabanınızdaki bir kullanıcıyla eşleşiyor.

İki koşuldan biri geçerliyse kullanıcı zaten kaydolmuştur ve siz bir erişim jetonu düzenleyebilirsiniz.

Google Hesap Kimliği veya onayda belirtilen e-posta adresi veritabanınızdaki bir kullanıcıyla eşleşmiyorsa söz konusu kullanıcı henüz kaydolmamıştır. Bu durumda, jeton değişimi uç noktanız, aşağıdaki örnekte olduğu gibi error=user_not_found belirten bir HTTP 401 hatasıyla yanıt vermelidir:

HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=UTF-8

{
  "error":"user_not_found",
}
Google, 401 hata yanıtını user_not_found hatasıyla aldığında, create olarak ayarlanan ve parametrenin kullanıcının profil bilgilerini içeren bir kimlik jetonunu gönderen intent parametresinin değeriyle jeton Exchange uç noktanızı çağırır.

Google ile Oturum Açma aracılığıyla hesap oluşturma

Bir kullanıcının hizmetinizde bir hesap oluşturması gerektiğinde Google, jeton değişimi uç noktanıza aşağıdaki örnekte gösterildiği gibi intent=create isteğinde bulunur:

POST /token HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

response_type=token&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=SCOPES&intent=create&consent_code=CONSENT_CODE&assertion=JWT[&NEW_ACCOUNT_INFO]

assertion parametresi, Google kullanıcı kimliğinin imzalı bir onaylamasını sağlayan bir JSON Web Token (JWT) içerir. JWT, kullanıcının Google Hesabı kimliğini, adını ve e-posta adresini içerir. Bu bilgileri, hizmetinizde yeni bir hesap oluşturmak için kullanabilirsiniz.

Hesap oluşturma isteklerine yanıt vermek için jeton exchange uç noktanızın aşağıdakileri yapması gerekir:

JWT onayını doğrulama ve kodunu çözme

JWT onayını doğrulamak ve kodunu çözmek için diliniz için JWT kod çözme kitaplığı kullanabilirsiniz. Jetonun imzasını doğrulamak için Google'ın ortak anahtarlarını (JWK veya PEM biçiminde kullanılabilir) kullanın.

Kodu çözüldüğünde JWT onayı aşağıdaki örneğe benzer:

{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The assertion's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID
  "iat": 233366400,         // Unix timestamp of the assertion's creation time
  "exp": 233370000,         // Unix timestamp of the assertion's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}

Jetonun imzasını doğrulamanın yanı sıra, onaylamayı yapanın (iss alanı) https://accounts.google.com olduğunu ve kitlenin (aud alanı) İşleminize atanan istemci kimliği olduğunu doğrulayın.

Kullanıcı bilgilerini doğrulama ve yeni hesap oluşturma

Aşağıdaki koşullardan birinin doğru olup olmadığını kontrol edin:

  • Onayın sub alanında bulunan Google Hesabı kimliği kullanıcı veritabanındadır.
  • Onaydaki e-posta adresi, kullanıcı veritabanınızdaki bir kullanıcıyla eşleşiyor.

İki koşuldan biri geçerliyse kullanıcıdan aşağıdaki örneğe benzer bir şekilde, HTTP 401 hatasıyla ve error=linking_error ile kullanıcının e-posta adresi ile login_hint belirterek mevcut hesabını Google Hesabı'na bağlamasını isteyin:

HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=UTF-8

{
  "error":"linking_error",
  "login_hint":"foo@bar.com"
}

Hiçbir koşul doğru değilse JWT'de sağlanan bilgileri kullanarak yeni bir kullanıcı hesabı oluşturun. Yeni hesaplar için genellikle şifre belirlenmez. Kullanıcıların, uygulamanızın platformlarında Google üzerinden giriş yapabilmesi için Google ile Oturum Açma özelliğini diğer platformlara eklemeniz önerilir. Alternatif olarak, kullanıcıya e-posta göndererek şifre kurtarma akışınızı başlatabilir, böylece diğer platformlarda oturum açmak için kullanılacak bir şifre ayarlayabilirsiniz.

Oluşturma işlemi tamamlandığında bir erişim jetonu ve aşağıdaki örnekte olduğu gibi, HTTPS yanıtınızın gövdesindeki bir JSON nesnesindeki değerleri döndürün:

{
  "token_type": "Bearer",
  "access_token": "ACCESS_TOKEN",
  
  "expires_in": SECONDS_TO_EXPIRATION
}

Kimlik doğrulama akışı için sesli kullanıcı arayüzünü tasarlayın

Kullanıcının doğrulanıp doğrulanmadığını kontrol edin ve hesap bağlama akışını başlatın

  1. Actions Console'da Actions Builder projenizi açın.
  2. İşleminizde hesap bağlamaya başlamak için yeni bir sahne oluşturun:
    1. Sahneler'i tıklayın.
    2. Yeni bir sahne eklemek için ekle (+) simgesini tıklayın.
  3. Yeni oluşturulan sahnede, Koşullar için ekle simgesini tıklayın.
  4. Görüşmeyle ilişkilendirilen kullanıcının doğrulanmış kullanıcı olup olmadığını kontrol eden bir koşul ekleyin. Kontrol başarısız olursa İşleminiz, görüşme sırasında hesap bağlama işlemi gerçekleştiremez ve hesap bağlantısı gerektirmeyen işlevlere erişim izni vermelidir.
    1. Koşul'un altındaki Enter new expression alanına aşağıdaki mantığı girin: user.verificationStatus != "VERIFIED"
    2. Geçiş bölümünde, hesap bağlama gerektirmeyen bir sahneyi veya yalnızca konuklara sunulan işlevin giriş noktası olan bir sahne seçin.

  1. Koşullar için ekle simgesini tıklayın.
  2. Kullanıcının ilişkili bir kimliği yoksa hesap bağlama akışını tetiklemek için bir koşul ekleyin.
    1. Koşul'un altındaki Enter new expression alanına aşağıdaki mantığı girin: user.verificationStatus == "VERIFIED"
    2. Geçiş'in altında Hesap Bağlama sistem sahnesini seçin.
    3. Kaydet'i tıklayın.

Kaydetme işleminden sonra projenize <SceneName>_AccountLinking adlı yeni bir hesap bağlama sistemi sahnesi eklenir.

Hesap bağlama sahnesini özelleştirin

  1. Sahneler'in altında hesap bağlama sistemi sahnesini seçin.
  2. İstem gönder'i tıklayın ve kullanıcıya İşlem'in kimliğine neden erişmesi gerektiğini açıklayan kısa bir cümle ekleyin (örneğin, "Tercihlerinizi kaydetmek için").
  3. Kaydet'i tıklayın.

  1. Koşullar bölümünde, Kullanıcı, hesap bağlama işlemini başarıyla tamamlarsa'yı tıklayın.
  2. Kullanıcı hesabını bağlamayı kabul ederse akışın nasıl devam etmesi gerektiğini yapılandırın. Örneğin, gerekli tüm özel iş mantığını işlemek ve kaynak sahneye geri dönmek için webhook'u çağırın.
  3. Kaydet'i tıklayın.

  1. Koşullar bölümünde, Kullanıcı, hesap bağlama işlemini iptal eder veya reddederse'yi tıklayın.
  2. Kullanıcı, hesabını bağlamayı kabul etmezse akışın nasıl ilerleyeceğini yapılandırın. Örneğin, onay mesajı gönderin ve hesap bağlama gerektirmeyen işlevler sunan sahnelere yönlendirin.
  3. Kaydet'i tıklayın.

  1. Koşullar bölümünde, Sistem veya ağ hatası oluşursa'yı tıklayın.
  2. Hesap bağlama akışı, sistem veya ağ hataları nedeniyle tamamlanamıyorsa akışın nasıl ilerleyeceğini yapılandırın. Örneğin, onay mesajı gönderin ve hesap bağlama gerektirmeyen işlevler sunan sahnelere yönlendirin.
  3. Kaydet'i tıklayın.

Veri erişim isteklerini işleme

Asistan isteği bir erişim jetonu içeriyorsa önce erişim jetonunun geçerli olduğundan ve süresinin sona ermediğini kontrol edin, ardından jetonla ilişkilendirilen kullanıcı hesabını kullanıcı hesabı veritabanınızdan alın.