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ğlama. İşleminizde bu bağlantı türünü kullanırsanız akışı Google ile Oturum Açma ile başlar. Bu oturum, kullanıcının Google Hesabı'nın giriş yapıp yapmadığını kontrol etmenizi profil bilgileri sisteminizde mevcuttur. Bağlanmıyorsa standart OAuth akışı başlar. Bu iki bağlantı türünün bir kombinasyonunu sunduğunuzda, kullanıcılarınız Google hesabıyla veya Google dışı hesapla işleminizde kimliğini belirtmelisiniz. Eğer isterlerse isterlerse Google profilleriyle yeni bir hesap da ekleyebilirsiniz.

Herhangi bir güvenlik açığı varsa OAuth ve Google ile Oturum Açma, önerilen hesap bağlama çözümüdür aşağıdakiler geçerlidir:

  • Birden çok platformu kapsayan bir İşleminiz vardır (örneğin, İşlem (bir Android uygulamasıyla çalışır).
  • Mevcut bir kimlik doğrulama sisteminiz var ve kullanıcıların kimliklerinin Google dışı hesaplarla bağlanmasını sağlamak. Örneğin, menü tableti bir bağlılık programı varsa ve kullanıcının puan kazanmış olur.

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

Anahtar terimler

OAuth ve Google ile Oturum Açma'nın işleyiş şeklini okumadan önce biraz bilgi edinin şu şartlar ile:

  • Google kimliği jetonu: Kullanıcı kimliğinin, aşağıdakileri içeren imzalı bir onayı kullanıcının temel Google profil bilgileri (adı, e-posta adresi ve profil resmi). Google kimliği jetonu, JSON Web Jetonu (JWT) olarak değiştirin. 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ı: İstemek için çağırdığınız yardımcı amacı bir hesap bağlama akışı bulunuyor. Daha fazla bilgi için bkz. Hesapta Oturum Açma.
    • Bağlam dizesi: Hesaba eklediğiniz özelleştirilmiş bir dize kullanıcıya neden bağlantı oluşturmak istediğinizi söyleyen oturum açma yardımcı amacı giriş yapmış olabilir.
  • Yetkilendirme kodu akışı: ile uygulayabileceğiniz bir OAuth 2.0 akışı OAuth + Google'da Oturum Açma. Bu akış iki uç nokta gerektirir:
    • Yetkilendirme uç noktası: Oturum açma kullanıcı arayüzünü sunan uç nokta oturum açmamış kullanıcılarınıza gösterebilirsiniz. Bu form, kısa ömürlü bir yetkilendirme kodu biçiminde erişim talep etti.
    • Jeton değişimi uç noktası: Bu uç nokta, iki türden oluşur. :
      1. Uzun ömürlü bir yenileme jetonu için yetkilendirme kodu değiştirir ve kısa ömürlü bir erişim jetonu bulunur. Bu değişim, kullanıcı hesap bağlama akışından geçer.
      2. Kısa ömürlü erişim için uzun ömürlü yenileme jetonu değiştirir jeton. Bu exchange, Google yeni bir erişim jetonuna ihtiyaç duyduğunda gerçekleşir çünkü süresi dolmuştu.
  • Dolaylı kod akışı: OAuth + Google'da Oturum Açma. Bu akış yalnızca bir yetkilendirme uç noktası gerektirir. Bu akış sırasında Google, kullanıcının emin olun. Oturum açma başarılı olursa uzun ömürlü bir erişim jetonu kullanarak Google'a dokunun. Bu erişim jetonu artık İşleminize Asistan.
  • Erişim jetonu: Hizmetinizi bir cihazın bazı bölümlerine erişmesi için kullanıcı verileri. Erişim jetonları her bir kullanıcıyla ilişkilendirilir.
  • Yenileme jetonu: Bir defa gerçekleştirildiğinde yeni bir erişim jetonuyla değiştirilen jeton kısa ömürlü erişim jetonunun süresi doldu.

Ö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ı

    Google'ın kimlik jetonundan otomatik bağlantı oluşturma ve hesap oluşturma protokolleri (ör. isteklere intent=get ve intent=create parametrelerini .

İşleyiş şekli

Bu bölümde OAuth ve Google ile Oturum Açma için genel akış açıklanmaktadır. Aşağıdaki OAuth ve GSI akışları bölümünde, a) etkinleştirme veya devre dışı bırakma durumunuza bağlı olarak sesli şekilde oluşturabilir ve b) gizli mi yoksa örtülü yetkilendirme kodu akışı.

Temel akış şu şekildedir:

  1. İşleminiz kullanıcıdan Google profiline erişmek için izin istiyor.
  2. Kullanıcı izin verdikten sonra İşleminiz şu özelliklere sahip bir Google kimliği jetonu alır: Kullanıcının Google profil bilgilerini içeriyorsa.
  3. Profil içeriğini okumak için jetonu doğrulamanız ve kodunu çözmeniz gerekir.
  4. İşleminiz, kullanıcının Google profilinin tespit edebilirsiniz.
    1. Açılıyorsa, kullanıcı zaten kullanıcı kimliği ile kullanıcı kimliği arasında bağlantı oluşturur. Google hesabı. Kullanıcı, Asistan'ın hesabı bağlıyken.
    2. Yoksa 5. adıma bakın.
  5. Kullanıcı, a) Google profiliyle yeni bir hesap oluşturabilir bilgi edinin veya b) sisteminizde farklı bir hesapla oturum açın. İlgili içeriği oluşturmak için kullanılan kullanıcıya sunulan seçenekler, hizmeti etkinleştirme veya sesle hesap oluşturmayı devre dışı bırakabilir. Kullanıcı 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ı takip ederseniz hizmetiniz ayrıca bir yenileme jetonu döndürür.)
  7. Kullanıcı artık telefonunu kullanarak Asistan'la görüşmeye devam edebilir hesap bağlandı.

OAuth ve GSI akışları

Bu bölümde, OAuth ve GSI ile oluşabilecek çeşitli akışlar açıklanmaktadır. Bu diyagramlar, yetkilendirme kodu akışında gerçekleşen akışları açıklar. yerine dolaylı kod akışı yerine Dialogflow'u kullandığınızı İşleminiz için doğal dil anlama çözümü.

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

Yukarıdaki akışta actions.intent.SIGN_IN yardımcı niyetini bağlam dizesi olabilir. Bu niyette kullanıcıdan erişim izni istiyor Google profil bilgileri. Kullanıcı izin verdikten sonra Asistan, user@gmail.com adlı kullanıcının profil bilgilerini içeren bir istek.

Bu noktadan sonraki akışlar, hesabı yapılandırıp yapılandırmadığınıza bağlı olarak farklılık gösterir Google Voice'a bağlanarak, kullanıcının bilgilerinin Google Haberler'de bahsedeceğim. 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şturma.

1. Akış: Kullanıcının bilgileri sisteminizde mevcut

Bu durumda, user@gmail.com tarafından temsil edilen kullanıcı arka ucunuzda mevcuttur. Böylece jeton değişimi uç noktanız, kullanıcı için bir jeton döndürür. Kullanıcının İşleminizdeki kimliği artık bu kişinin Google Hesabı'na bağlı. Kullanıcının orijinal istek ("Her zamanki siparişimi ver"), order_drink. özel amacıyla eşleşiyor Ardından webhook'unuz, eşleşen intent'in yerine getirilmesini işler ve user@gmail.com için veritabanının normal sırası. Kullanıcı daha sonra yardımcı olabilir.

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 şunu etkinleştirmediği için: arka ucunuzda varsa Asistan, kullanıcıya bunu yapmak isteyip şunlardan birini yapın:

a) Google profil bilgilerini kullanarak sisteminizde yeni bir hesap oluşturabilir, Bu işlem sesle gerçekleştirilir

b) Sisteminizde farklı bir hesapla oturum açın

Bu durumda kullanıcı, sesle yeni bir hesap oluşturmayı seçer. Google aramaları hizmetinizin jeton değişimi uç noktası ile hesap oluşturma isteği ekleyin. Bu istek, gereken bileşenleri içeren Google kimliği jetonunu içerir yeni bir hesap oluşturun. Ardından bu jetondaki bilgileri kullanabilirsiniz (kullanıcının adı ve e-posta adresi) ekleyin.

Hesap oluşturulduktan sonra hizmetiniz bir erişim jetonu döndürür ve yeni oluşturulan hesap için yeni bir jeton oluşturulur. İşleminizdeki kullanıcı kimliği artık Google Hesabı'na bağlı. Kullanıcının orijinal isteği ("Her zamanki siparişimi ver") şu özel niyetle eşleşir: order_drink. Webhook'unuz eşleşen amacın yerine getirilmesini sağlar ve veritabanınızı user@gmail.com adlı satıcının normal sırası, kullanıcı yeni olduğu için henüz mevcut değil. İşleminiz daha sonra kullanıcıya ne sipariş etmek istediğini sorabilir.

3. Akış: Kullanıcının bilgileri mevcut değil ve kullanıcı farklı bir hesapla oturum açıyor

Sesle hesap oluşturmayı etkinleştirdiğiniz için Asistan, kullanıcıya bunu yapıp yapmadığını sorar aşağıdakilerden birini yapmak istiyor:

a) Google profil bilgilerini kullanarak sisteminizde yeni bir hesap oluşturabilir, Bu işlem sesle gerçekleştirilir

b) Sisteminizde farklı bir hesapla oturum açın

Bu durumda kullanıcı farklı bir hesapla oturum açmayı seçer ve standart OAuth akışını başlatır. Akış yalnızca ses özellikli bir cihazda başladıysa Google, yürütme işlemini bir telefona aktarır. Google daha sonra açar kullanıcının tarayıcısındaki yetkilendirme uç noktanız ve kullanıcı, hizmetinizde oturum açıp açmayacağını seçebilir: Google ile Oturum Açma özelliğini kullanmayan mevcut bir hesap veya b) yeni bir hesap oluşturma farklı bir sağlayıcı kullanabilirsiniz. OAuth akışı hakkında daha fazla bilgi için bkz. OAuth kavram kılavuzu.

Kullanıcının kimlik bilgilerini doğruladıktan sonra hizmetiniz bir erişim jetonu döndürür ve Google'a bir yenileme jetonu gönderilir. İşleminizdeki kullanıcının kimliği bağlandı Google dışı bir hesaba bağlayabilirsiniz. Kullanıcının orijinal isteği ("Her zamanki siparişimi ver") eşleşiyor özel amaç order_drink. Webhook'unuz şunun sağlanmasını gerçekleştirir: eşleşen amacı arar ve veritabanınızı user@gmail.com'ın normal sırasına göre sorgular. Kullanıcı yeni olduğu için henüz mevcut değil. İşleminiz daha sonra sipariş etmek istediklerini söyleyebilir veya her zamanki siparişlerini yapılandırmalarını isteyebilirsiniz.

Sesli hesap oluşturma özelliğiyle akış devre dışı bırakıldı

Bu bölümde, devre dışı bıraktığınızda oluşabilecek hesap bağlama akışı açıklanmaktadır. Sesle hesap oluşturma.

4. Akış: Kullanıcının bilgileri mevcut değil

Sesle hesap oluşturma özelliğini etkinleştirmediniz ve kullanıcı, yapılandırarak standart OAuth akışı başlar. Asistan, yetkilendirme uç noktası (akış yalnızca ses modunda başladıysa) cihaza aktarırsa Google, yürütmeyi ekranı olan bir cihaza aktarır. Kullanıcı a) Kendisi kaydolmuşsa farklı bir sağlayıcıyla oturum açmayı seçebilir farklı bir hesap kullanarak veya b) yeni bir hesap oluşturarak başka bir sağlayıcı kullanabilirsiniz. OAuth akışı hakkında daha fazla bilgi için bkz. OAuth kavram kılavuzu.

Kullanıcının kimlik bilgilerini doğruladıktan sonra hizmetiniz bir erişim jetonu döndürür ve Google'a bir yenileme jetonu gönderilir. İşleminizdeki kullanıcının kimliği bağlandı Google dışı bir hesaba bağlayabilirsiniz. Kullanıcının orijinal isteği ("Her zamanki siparişimi ver") eşleşiyor özel amaç order_drink. Webhook'unuz şunun sağlanmasını gerçekleştirir: eşleşen amacı arar ve veritabanınızı user@gmail.com'ın normal sırasına göre sorgular. Kullanıcı yeni olduğu için henüz mevcut değil. İşleminiz daha sonra ayarlamak için kullanıcının her zamanki sıralamasını ayarlar.