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 ile hesap bağlama

OAuth bağlama türü, iki endüstri standardı OAuth 2.0 akışını destekler: dolaylı ve yetkilendirme kod akışları.

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.

OAuth hesabı bağlamayı uygula

Projeyi yapılandırma

Projenizi OAuth bağlantısı kullanacak şekilde yapılandırmak için aşağıdaki adımları uygulayın:

  1. Actions Console'u açıp 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 Hayır, yalnızca web sitemde hesap oluşturmaya izin vermek istiyorum'u seçin.

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

  6. İstemci Bilgileri bölümünde:

    • 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.
  1. 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.

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 dolmadığından) emin olun ve ardından ilişkili kullanıcı hesabını veritabanınızdan alın.