OAuth Tabanlı Google ile Oturum Açma "Basitleştirilmiş" bağlama dair kavram kılavuzu

OAuth tabanlı Google ile Oturum Açma "Kolaylaştırılmış" bağlantı türü, OAuth tabanlı hesap bağlamaya Google ile Oturum Açma'yı ekler. İşleminizde bu bağlantı türünü kullanırsanız akış, kullanıcının Google profili bilgilerinin sisteminizde mevcut olup olmadığını kontrol etmenizi sağlayan Google ile Oturum Açma ile başlar. Aksi takdirde standart bir OAuth akışı başlar. Bu iki bağlantı türünün bir kombinasyonunu sağlayan kullanıcılarınız, İşleminizdeki kimliklerini Google veya Google dışı bir hesaba bağlayabilir. İsterlerse Google profil bilgileriyle yeni bir hesap da oluşturabilirler.

Basitleştirilmiş bağlantı, aşağıdakilerden herhangi birinin geçerli olduğu durumlarda önerilen hesap bağlama çözümüdür:

  • Birden çok platformu kapsayan bir İşleminiz var (örneğin, İşleminiz bir Android uygulaması ile çalışıyorsa).
  • Mevcut bir kimlik doğrulama sisteminiz var ve kullanıcıların, kimliklerini Google dışı hesaplara bağlamasına izin vermek istiyorsunuz. Örneğin, bir bağlılık programı sunuyorsanız ve kullanıcının mevcut hesabında biriken puanları kaybetmediğinden emin olmak istiyorsanız bu fırsattan yararlanabilirsiniz.

Kolay bağlantı özelliğinin sizin için doğru çözüm olduğunu doğrulamak için Hesap bağlama türünüzü seçme sayfasını inceleyin.

Anahtar terimler

Geliştirilmiş bağlantı özelliğinin işleyiş şeklini okumadan önce aşağıdaki terimlerle ilgili bilgi edinin:

  • Google kimlik jetonu: Kullanıcının temel Google profil bilgilerini (ad, e-posta adresi ve profil resmi) içeren, kullanıcı kimliğinin imzalı bir onayı. Google kimlik jetonu, JSON Web Jetonu'dur (JWT). Aşağıda kodu çözülmüş bir jeton örneği verilmiştir:
{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The token's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
  "iat": 233366400,         // Unix timestamp of the token's creation time
  "exp": 233370000,         // Unix timestamp of the token'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"
}
  • user.verificationStatus: Mevcut oturumda doğrulanmış bir kullanıcı olup olmadığını göstermek için sistem tarafından ayarlanan mülk.

  • user.accountLinkingStatus: Geçerli oturumdaki kullanıcının bağlı bir kimliğine sahip olup olmadığını belirtmek için sistem tarafından ayarlanan özellik.

  • Hesap bağlama sistemi sahnesi: Hesap bağlama için onay akışını uygulayan ve belirli kullanım alanlarına uyacak şekilde özelleştirilebilen önceden tanımlanmış bir düzen.

  • Yetkilendirme kodu akışı: Kolaylaştırılmış bağlantı ile uygulayabileceğiniz bir OAuth 2.0 akışı. Bu akış iki uç nokta gerektirir:

    • Yetkilendirme uç noktası: Henüz oturum açmamış kullanıcılarınıza oturum açma kullanıcı arayüzünü sunan uç nokta. İstenen erişim iznini kısa süreli yetkilendirme kodu biçiminde kaydeder.
    • Jeton değişimi uç noktası: Bu uç nokta, iki tür exchange'den sorumludur:
      1. Uzun ömürlü yenileme jetonu ve kısa ömürlü erişim jetonu için yetkilendirme kodu değiştirir. Bu değişim, kullanıcı hesap bağlama akışından geçtiğinde gerçekleşir.
      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 dolduğu için yeni bir erişim jetonuna ihtiyacı olduğunda gerçekleşir.
  • Dolaylı kod akışı: Kolaylaştırılmış bağlantı ile uygulayabileceğiniz bir OAuth 2.0 akışı. Bu akış yalnızca bir yetkilendirme uç noktası gerektirir. Bu akış sırasında Google, kullanıcının tarayıcısında yetkilendirme uç noktanızı açar. Oturum açma başarılı olursa Google'a uzun ömürlü bir erişim jetonu döndürürsünüz. Bu erişim jetonu artık Asistan'dan İşleminize gönderilen tüm isteklere dahil ediliyor.

  • Erişim jetonu: Hizmetinize kullanıcı verilerinin belirli kısımlarına erişim yetkisi veren bir jeton. Erişim jetonları her bir kullanıcıyla ilişkilendirilir.

  • Yenileme jetonu: Kısa ömürlü bir erişim jetonunun süresi dolduktan sonra yeni bir erişim jetonuyla değiştirilen jeton.

Ön koşullar

Basitleştirilmiş bağlantı türünü kullanmak için aşağıdakilere ihtiyacınız vardır:

  • OAuth 2.0 sunucusu
  • Jeton değişimi uç noktası

    Jeton değişimi uç noktası, Google'ın kimlik jetonundan otomatik bağlantı ve hesap oluşturma protokollerini desteklemek için genişletilmelidir (ör. isteklere intent=get ve intent=create parametrelerini bu uç noktaya ekleyin).

İşleyiş şekli

Bu bölümde, Basitleştirilmiş bağlantı için genel akış açıklanmaktadır. Aşağıdaki Basitleştirilmiş bağlantı akışları bölümünde, a) ses aracılığıyla hesap oluşturmayı etkinleştirip devre dışı bırakmanız ve b) örtülü kod akışını kullanıp kullanmadığınıza bağlı olarak gerçekleşebilen çeşitli akışlar açıklanmaktadır.

Temel akış aşağıdaki gibidir:

  1. İşleminiz kullanıcıdan Google profiline erişmek için izin istiyor.
  2. Kullanıcı izin verdikten sonra İşleminiz, kullanıcının Google profil bilgilerini içeren bir Google kimliği jetonu alır.
  3. Profil içeriğini okumak için jetonu doğrulamanız ve kodunu çözmeniz gerekir.
  4. İşleminiz kullanıcının Google profili bilgilerinin sisteminizde mevcut olup olmadığını kontrol etmek için bu jetonu kullanıyor.
    1. Bu durumda, kullanıcı Google hesabıyla sisteminizde zaten oturum açmıştır ve Asistan, kullanıcının kimliğini kullanıcının Google hesabına bağlar. Kullanıcı, bağlı hesabını kullanarak Asistan'la görüşmeye devam edebilir.
    2. Görünmüyorsa 5. adıma bakın.
  5. Kullanıcı, a) Google profil bilgileriyle yeni bir hesap oluşturabilir veya b) sisteminizde farklı bir hesapla oturum açabilir. Kullanıcıya sunulan seçenekler, sesle hesap oluşturmayı etkinleştirme veya devre dışı bırakma durumunuza bağlı olarak değişir. Kullanıcı, sisteminizde farklı bir hesapla oturum açmayı seçerse standart OAuth akışı başlar.
  6. Kullanıcı yeni bir hesap oluşturduktan veya farklı bir sağlayıcıyla oturum açtıktan sonra hizmetiniz Google'a bir erişim jetonu döndürür. (Yetkilendirme kodu akışını kullanıyorsanız hizmetiniz ayrıca bir yenileme jetonu da döndürür.)
  7. Kullanıcı artık hesabı bağlayarak Asistan'la görüşmeye devam edebilir.

Basitleştirilmiş bağlantı akışları

Bu bölümde, Basitleştirilmiş bağlantı ile gerçekleşebilecek çeşitli akışlar ele alınmaktadır. Bu diyagramlar, dolaylı kod akışı yerine yetkilendirme kodu akışıyla gerçekleşen akışları ele alır ve Actions Builder'ı kullandığınız varsayılır.

Her akış, kullanıcı İşleminizi çağırdıktan sonra şu yaygın adımları içerir:

Yukarıdaki akışta, hesap bağlama sistemi sahnesine geçiş yapar ve özelleştirilmiş bir gerekçe sunarsınız. Sahne, Google profil bilgilerine erişmek için kullanıcıdan izin ister. Asistan, kullanıcı izin verdikten sonra user@gmail.com için profil bilgilerini içeren bir istek gönderir.

Bu noktadan sonraki akışlar, hesap bağlantısını sesli şekilde yapılandırıp yapılandırmamanıza ve kullanıcının bilgilerinin sisteminizde halihazırda mevcut olup olmamasına göre farklılık gösterir. Bu akışların her biri aşağıdaki bölümlerde açıklanmıştır.

Sesli hesap oluşturma özelliğinin etkin olduğu akışlar

Bu bölümde, sesle hesap oluşturmayı etkinleştirmeniz durumunda oluşabilecek hesap bağlama akışları ayrıntılı olarak açıklanmaktadır.

1. Akış: Sisteminizde kullanıcı bilgileri var

Bu durumda, user@gmail.com ile temsil edilen kullanıcı arka ucunuzda bulunur. Bu nedenle jeton değişimi uç noktanız, kullanıcı için bir jeton döndürür. İşleminizdeki kullanıcının kimliği artık kullanıcının Google hesabına bağlı. Kullanıcının orijinal isteği ("Siparişimi her zaman ver") kullanıcının amacıyla eşleşiyor. order_drink. Webhook'unuz daha sonra eşleşen amacın karşılanmasını işler ve user@gmail.com adlı kullanıcının normal siparişi için veritabanınızı sorgular. Kullanıcı, daha sonra Asistan'la görüşmeye devam edebilir.

2. Akış: Kullanıcının bilgileri yoktur ve kullanıcı hesap oluşturur

Sesle hesap oluşturmayı etkinleştirdiğiniz ve user@gmail.com arka ucunuzda bulunmadığı için Asistan, kullanıcıya aşağıdakilerden birini yapmak isteyip istemediğini sorar:

a) Sesle gerçekleştirilen Google profil bilgilerini kullanarak sisteminizde yeni bir hesap oluşturun

b) Farklı bir hesapla sisteminizde oturum açın

Bu durumda, kullanıcı sesle yeni bir hesap oluşturmayı seçer. Google, hizmetinizin jeton değişimi uç noktasını hesap oluşturma isteğiyle çağırır. Bu istek, yeni bir hesap oluşturmak için gereken bileşenleri içeren Google kimlik jetonunu içerir. Daha sonra bu jetondaki bilgileri (kullanıcının adı ve e-posta adresi) kullanıcı için bir hesap oluşturmak amacıyla kullanabilirsiniz.

Hesap oluşturulduktan sonra hizmetiniz yeni oluşturulan hesap için bir erişim jetonu ve yenileme jetonu döndürür. İşleminizdeki kullanıcının kimliği artık Google Hesabı'na bağlı. Kullanıcının orijinal isteği ("Siparişimi her zaman ver") kullanıcı amacıyla eşleşiyor. order_drink. Webhook, daha sonra eşleşen amacın yerine getirilmesini işler ve veritabanınızı, kullanıcı yeni olduğu için henüz mevcut olmayan user@gmail.com adlı normal sipariş için sorgular. İşleminiz daha sonra kullanıcıya ne sipariş etmek istediğini sorabilir.

3. Akış: Kullanıcının bilgileri yoktur ve kullanıcı farklı bir hesapla oturum açar

Sesle hesap oluşturmayı etkinleştirdiğiniz için Asistan, kullanıcıya aşağıdakilerden birini yapmak isteyip istemediğini sorar:

a) Sesle gerçekleştirilen Google profil bilgilerini kullanarak sisteminizde yeni bir hesap oluşturun

b) Farklı bir hesapla sisteminizde oturum açın

Bu durumda kullanıcı farklı bir hesapla oturum açmayı seçer. Bu işlem standart OAuth akışını başlatır. Akış yalnızca ses özellikli bir cihazda başladıysa Google yürümeyi telefona aktarır. Google daha sonra kullanıcının tarayıcısında yetkilendirme uç noktanızı açar ve kullanıcı, yapılandırmanıza bağlı olarak a) Google ile Oturum Açma özelliğini kullanmayan mevcut bir hesapla hizmetinizde oturum açmayı veya b) farklı bir sağlayıcı kullanarak yeni hesap oluşturmayı seçebilir. OAuth akışı hakkında daha fazla bilgi edinmek için OAuth bağlama kavram kılavuzu'na göz atın.

Kullanıcının kimlik bilgilerini doğruladıktan sonra hizmetiniz Google'a bir erişim jetonu ve yenileme jetonu döndürür. İşleminizdeki kullanıcının kimliği artık Google dışı bir hesaba bağlı. Kullanıcının orijinal isteği ("Siparişimi her zamanki gibi sipariş et") kullanıcı amacıyla eşleşir order_drink. Daha sonra webhook'unuz, eşleşen amacın yerine getirilmesini işler ve user@gmail.com adlı normal siparişe göre veritabanınızı sorgular. Kullanıcı yeni olduğu için henüz mevcut değildir. İşleminiz daha sonra kullanıcıya ne sipariş etmek istediğini sorabilir veya her zamanki sırasını ayarlamasını isteyebilir.

Akışta sesli hesap oluşturma özelliği devre dışı

Bu bölümde, sesle hesap oluşturmayı devre dışı bırakırsanız oluşabilecek hesap bağlama akışı ayrıntılı olarak açıklanmaktadır.

4. Akış: Kullanıcının bilgileri yok

Sesle hesap oluşturmayı etkinleştirmediniz ve kullanıcı arka uçunuzda bulunmadığından standart OAuth akışı başlar. Asistan, kullanıcının tarayıcısında yetkilendirme uç noktanızı açar (akış yalnızca ses özellikli bir cihazda başladıysa Google yürütme işlemini ekranı olan bir cihaza aktarır). Kullanıcı, a) hizmetinize farklı bir hesapla kaydolmuşsa farklı bir sağlayıcıyla oturum açmayı veya b) farklı bir sağlayıcıyla yeni hesap oluşturmayı seçebilir. OAuth akışı hakkında daha fazla bilgi edinmek için OAuth bağlama kavram kılavuzuna göz atın.

Kullanıcının kimlik bilgilerini doğruladıktan sonra hizmetiniz Google'a bir erişim jetonu ve yenileme jetonu döndürür. İşleminizdeki kullanıcının kimliği artık Google dışı bir hesaba bağlı. Kullanıcının orijinal isteği ("Siparişimi her zamanki gibi sipariş et") kullanıcı amacıyla eşleşir order_drink. Daha sonra webhook'unuz, eşleşen amacın yerine getirilmesini işler ve user@gmail.com adlı normal siparişe göre veritabanınızı sorgular. Kullanıcı yeni olduğu için henüz mevcut değildir. İşleminiz daha sonra kullanıcıdan normal sırasını ayarlamasını isteyebilir.