OAuth ve Google ile Oturum Açma kavram kılavuzu (Dialogflow)

OAuth ve Google ile Oturum Açma bağlantı türü, OAuth tabanlı hesap bağlamaya ek olarak Google ile Oturum Açma özelliğini de 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.

OAuth ve Google ile Oturum Açma, 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.

OAuth ve Google ile Oturum Açma'nın sizin için doğru çözüm olduğunu doğrulamak için Hesap bağlama türünüzü seçin sayfasını inceleyin.

Anahtar terimler

OAuth ve Google ile Oturum Açma'nın işleyiş şekli hakkında bilgi edinmeden önce aşağıdaki terimler hakkında 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"
}
  • Hesapta oturum açma yardımcı amacı: Asistan'dan hesap bağlama akışı istemek için çağırdığınız yardımcı intent. Daha fazla bilgi için Hesapta Oturum Açma bölümüne bakın.
    • Bağlam dizesi: Hesapta oturum açma yardımcısı amacına eklediğiniz ve kullanıcıya hesabını neden bağlamak istediğinizi söyleyen özelleştirilmiş bir dize.
  • Yetkilendirme kodu akışı: OAuth + Google ile Oturum Açma 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ışı: OAuth + Google ile Oturum Açma 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

OAuth ve Google ile Oturum Açma bağlantı türünü kullanmak için aşağıdakilere ihtiyacınız vardır:

  • OAuth 2 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 OAuth ve Google ile Oturum Açma işlemlerinin genel akışı açıklanmaktadır. Aşağıdaki OAuth ve GSI akışları bölümünde, şu unsurlara bağlı olarak gerçekleşebilen çeşitli akışlar açıklanmaktadır: a) sesle hesap oluşturmayı etkinleştirme veya devre dışı bırakma ve b) örtülü kod akışını mı yoksa yetkilendirme kodu akışını mı kullandığınız.

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ı, hesabı bağlayarak 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.

OAuth ve GSI akışları

Bu bölümde, OAuth ve GSI'da oluşabilecek ç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 Dialogflow'u İşleminiz için doğal dil anlama çözümü olarak 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, özelleştirdiğiniz bağlam dizesiyle actions.intent.SIGN_IN yardımcı niyetini çağırırsınız. Bu niyette kullanıcının Google profil bilgilerine erişebilmesi için izin istenir. 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") özel amaçla eşleşiyor. order_drink. Webhook'unuz daha sonra eşleşen amacın yerine getirilmesini işler ve user@gmail.com adlı kullanıcının normal siparişine göre 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şim ver"), order_drink. özel amacıyla eşleşiyor. Webhook, daha sonra eşleşen amacın yerine getirilmesini işler ve veritabanınızı user@gmail.com adlı kullanıcının yeni olduğu için henüz mevcut olmayan normal siparişe göre 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ştirdiniz. Bu nedenle, 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 kavram rehberini inceleyin.

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") order_drink. özel amacıyla eşleşir. Webhook, daha sonra eşleşen amacın karşılanmasını gerçekleştirir ve user@gmail.com adlı normal sipariş için veritabanınızı sorgular. Kullanıcı yeni olduğu için bu sipariş 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 kavram rehberini inceleyin.

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") order_drink. özel amacıyla eşleşir. Webhook, daha sonra eşleşen amacın karşılanmasını gerçekleştirir ve user@gmail.com adlı normal sipariş için veritabanınızı sorgular. Kullanıcı yeni olduğu için bu sipariş henüz mevcut değildir. İşleminiz daha sonra kullanıcıdan normal sırasını ayarlamasını isteyebilir.