คู่มือแนวคิดเกี่ยวกับ OAuth และ Google Sign-In (Dialogflow)

ประเภทการลิงก์ OAuth และ Google Sign-In จะเพิ่ม Google Sign-In นอกเหนือจาก การลิงก์บัญชีโดยใช้ OAuth หากคุณใช้การลิงก์ประเภทนี้ในการดำเนินการ เริ่มต้นด้วย Google Sign-In ซึ่งช่วยให้คุณตรวจสอบได้ว่าผู้ใช้ ข้อมูลโปรไฟล์ที่มีอยู่ในระบบ หากไม่เปิด แสดงว่าใช้ขั้นตอน OAuth มาตรฐาน เริ่มต้นขึ้น เมื่อระบุการลิงก์ทั้ง 2 ประเภทนี้ร่วมกัน ผู้ใช้จะสามารถลิงก์ ตัวตนกับการดำเนินการของคุณด้วยบัญชี Google หรือบัญชีที่ไม่ใช่ของ Google ถ้า ผู้ใช้สามารถสร้างบัญชีใหม่ด้วยโปรไฟล์ Google ของพวกเขาได้

OAuth และ Google Sign-In เป็นโซลูชันการลิงก์บัญชีที่แนะนำหากมี โดยมีเงื่อนไขดังนี้

  • คุณมีการดำเนินการที่ครอบคลุมหลายแพลตฟอร์ม (เช่น หาก การทำงานนี้ใช้ได้กับแอป Android)
  • คุณมีระบบการตรวจสอบสิทธิ์อยู่แล้ว และต้องการอนุญาตให้ผู้ใช้ เชื่อมโยงข้อมูลประจำตัวกับบัญชีที่ไม่ใช่ของ Google ตัวอย่างเช่น หากนำเสนอ โปรแกรมสะสมคะแนน และต้องการแน่ใจว่าผู้ใช้จะไม่สูญเสีย คะแนนที่สะสมในบัญชีที่มีอยู่

หากต้องการยืนยันว่า OAuth และ Google Sign-In เป็นโซลูชันที่เหมาะสำหรับคุณ โปรดดู หน้าเลือกประเภทการลิงก์บัญชี

คำสำคัญ

โปรดอ่านข้อมูลวิธีการทำงานของ OAuth และ Google Sign-In ก่อนอ่านจบ ที่มีข้อกำหนดต่อไปนี้

  • โทเค็นรหัส Google: การยืนยันที่ลงนามสำหรับข้อมูลประจำตัวของผู้ใช้ที่มี ข้อมูลโปรไฟล์ Google พื้นฐานของผู้ใช้ (ชื่อ ที่อยู่อีเมล และ รูปโปรไฟล์) โทเค็นรหัส Google คือ เว็บโทเค็น JSON (JWT) ต่อไปนี้เป็นตัวอย่างของโทเค็นที่ถอดรหัส
{
  "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"
}
  • จุดประสงค์ของตัวช่วยในการลงชื่อเข้าใช้บัญชี: Intent ที่เป็นตัวช่วยที่คุณเรียกใช้เพื่อขอ ขั้นตอนการลิงก์บัญชีจาก Assistant สำหรับข้อมูลเพิ่มเติม โปรดดู การลงชื่อเข้าใช้บัญชี
    • สตริงบริบท: สตริงที่กำหนดเองที่คุณเพิ่มในบัญชี Intent ตัวช่วยในการลงชื่อเข้าใช้ที่บอกผู้ใช้ว่าทำไมคุณจึงต้องการลิงก์ บัญชีของตนได้
  • ขั้นตอนการใช้รหัสการให้สิทธิ์: ขั้นตอน OAuth 2.0 ที่คุณนำไปใช้กับ OAuth + Google Sign-In ขั้นตอนนี้ต้องใช้ปลายทาง 2 รายการ ได้แก่
    • ปลายทางการให้สิทธิ์: ปลายทางที่แสดง UI การลงชื่อเข้าใช้ ต่อผู้ใช้ที่ยังไม่ได้ลงชื่อเข้าใช้ ซึ่งจะบันทึกความยินยอมต่อ ที่ได้รับการร้องขอในรูปแบบของรหัสการให้สิทธิ์ชั่วคราว
    • ปลายทางการแลกเปลี่ยนโทเค็น: ปลายทางนี้มี 2 ประเภท ของการแลกเปลี่ยน:
      1. แลกเปลี่ยนรหัสการให้สิทธิ์สำหรับโทเค็นการรีเฟรชที่ใช้ได้นาน และโทเค็นเพื่อการเข้าถึงที่มีอายุใช้งานสั้น การแลกเปลี่ยนนี้จะเกิดขึ้นเมื่อผู้ใช้ จะผ่านขั้นตอนการลิงก์บัญชี
      2. แลกเปลี่ยนโทเค็นการรีเฟรชที่ใช้ได้นานสำหรับการเข้าถึงในช่วงเวลาสั้นๆ โทเค็น การแลกเปลี่ยนนี้จะเกิดขึ้นเมื่อ Google ต้องการโทเค็นเพื่อการเข้าถึงใหม่ เนื่องจากแพ็กเกจหมดอายุ
  • ขั้นตอนของโค้ดแบบไม่เจาะจงปลายทาง: ขั้นตอน OAuth 2.0 ที่คุณติดตั้งใช้งานได้ด้วย OAuth + Google Sign-In ขั้นตอนนี้ต้องใช้ปลายทางการให้สิทธิ์เท่านั้น ระหว่างขั้นตอนนี้ Google จะเปิดปลายทางการให้สิทธิ์ใน เบราว์เซอร์ หากลงชื่อเข้าใช้สำเร็จ คุณจะส่งคืนโทเค็นเพื่อการเข้าถึงที่ใช้ได้นานไปยัง Google โทเค็นเพื่อการเข้าถึงนี้จะรวมอยู่ในทุกคำขอที่ส่งจาก Assistant สำหรับการดำเนินการของคุณ
  • โทเค็นเพื่อการเข้าถึง: โทเค็นที่ให้สิทธิ์บริการของคุณในการเข้าถึงส่วนต่างๆ ของ ข้อมูลผู้ใช้ โทเค็นเพื่อการเข้าถึงจะเชื่อมโยงกับผู้ใช้แต่ละราย
  • โทเค็นการรีเฟรช: โทเค็นที่แลกเปลี่ยนเป็นโทเค็นเพื่อการเข้าถึงใหม่เมื่อ โทเค็นเพื่อการเข้าถึงที่มีอายุสั้นหมดอายุแล้ว

ข้อกำหนดเบื้องต้น

หากต้องการใช้ประเภทการลิงก์ OAuth และ Google Sign-In คุณต้องมีสิ่งต่อไปนี้

  • เซิร์ฟเวอร์ OAuth 2
  • ปลายทางการแลกเปลี่ยนโทเค็น

    คุณต้องขยายปลายทางการแลกเปลี่ยนโทเค็นเพื่อเพิ่มการรองรับ โปรโตคอลสำหรับการลิงก์อัตโนมัติและการสร้างบัญชีจากโทเค็นรหัส (นั่นคือ เพิ่มพารามิเตอร์ intent=get และ intent=create ในคำขอไปยัง ปลายทางนี้)

วิธีการทำงาน

ส่วนนี้จะอธิบายขั้นตอนทั่วไปสำหรับ OAuth และ Google Sign-In ส่วนต่อไปนี้ ขั้นตอน OAuth และ GSI จะอธิบาย ขั้นตอนต่างๆ ที่อาจเกิดขึ้นตาม ก) ไม่ว่าคุณจะเปิดหรือปิดใช้ สร้างบัญชีโดยใช้เสียงและ ข) ไม่ว่าคุณจะใช้คำโดยนัยหรือ ขั้นตอนรหัสการให้สิทธิ์

ขั้นตอนพื้นฐานมีดังนี้

  1. การดำเนินการของคุณขอความยินยอมจากผู้ใช้เพื่อเข้าถึงโปรไฟล์ Google
  2. หลังจากผู้ใช้ให้ความยินยอม การดำเนินการของคุณจะได้รับโทเค็น Google ID ที่ มีข้อมูลโปรไฟล์ Google ของผู้ใช้
  3. คุณต้องตรวจสอบและถอดรหัสโทเค็นจึงจะอ่านเนื้อหาโปรไฟล์ได้
  4. การดำเนินการของคุณใช้โทเค็นนี้เพื่อตรวจสอบว่าโปรไฟล์ Google ของผู้ใช้หรือไม่ ข้อมูลที่มีอยู่ในระบบของคุณ
    1. หากมี แสดงว่าผู้ใช้ได้ลงชื่อเข้าใช้ระบบของคุณด้วย บัญชี Google และ Assistant จะลิงก์ข้อมูลประจำตัวของผู้ใช้กับ บัญชี Google ผู้ใช้สามารถสนทนาต่อกับ Assistant ที่ลิงก์กับบัญชีของตัวเอง
    2. หากไม่มี โปรดดูขั้นตอนที่ 5
  5. ผู้ใช้สามารถ ก) สร้างบัญชีใหม่ด้วยโปรไฟล์ Google ของตนเอง หรือ ข) ลงชื่อเข้าใช้ระบบของคุณด้วยบัญชีอื่น สิ่งที่ผู้ใช้จะได้รับจะแตกต่างกันไป ขึ้นอยู่กับว่าคุณเปิดใช้หรือ ปิดใช้งานการสร้างบัญชีผ่านเสียง หากผู้ใช้เลือกที่จะลงชื่อเข้าใช้ ขั้นตอน OAuth มาตรฐานจะเริ่มต้นขึ้นด้วยบัญชีอื่น
  6. หลังจากผู้ใช้สร้างบัญชีใหม่หรือลงชื่อเข้าใช้ด้วยผู้ให้บริการรายอื่น บริการของคุณจะส่งโทเค็นเพื่อการเข้าถึงคืนให้กับ Google (หากคุณใช้แท็ก ขั้นตอนรหัสการให้สิทธิ์ บริการของคุณจะส่งโทเค็นการรีเฟรชกลับมาด้วย)
  7. ตอนนี้ผู้ใช้สนทนากับ Assistant ต่อได้โดยใช้ ลิงก์บัญชีแล้ว

ขั้นตอน OAuth และ GSI

ส่วนนี้จะอธิบายขั้นตอนต่างๆ ที่อาจเกิดขึ้นกับ OAuth และ GSI แผนภาพเหล่านี้อธิบายโฟลว์ที่เกิดขึ้นกับขั้นตอนรหัสการให้สิทธิ์ แทนที่จะเป็นโฟลว์โค้ด implicit และสมมติว่าคุณกำลังใช้ Dialogflow เป็น โซลูชันการทำความเข้าใจภาษาธรรมชาติสำหรับการดำเนินการของคุณ

แต่ละกระบวนการจะมีขั้นตอนทั่วไปเหล่านี้หลังจากที่ผู้ใช้เรียกใช้การดำเนินการของคุณ

ในขั้นตอนด้านบน คุณจะเรียกใช้ Intent ของตัวช่วย actions.intent.SIGN_IN ด้วย สตริงบริบทที่คุณปรับแต่ง Intent นี้จะขอสิทธิ์ในการเข้าถึงจากผู้ใช้ ข้อมูลโปรไฟล์ Google ของตนเอง หลังจากผู้ใช้ให้ความยินยอมแล้ว Assistant จะส่ง คำขอที่มีข้อมูลโปรไฟล์สำหรับ user@gmail.com

ขั้นตอนหลังจากจุดนี้จะแตกต่างกันไปขึ้นอยู่กับว่าคุณกำหนดค่าบัญชีหรือไม่ ด้วยเสียงและดูว่ามีข้อมูลของผู้ใช้ อยู่แล้วหรือไม่ใน ระบบ อ่านคำอธิบายแต่ละขั้นตอนเหล่านี้ได้ในส่วนต่อไปนี้

ขั้นตอนเมื่อเปิดใช้การสร้างบัญชีเสียง

ส่วนนี้จะแสดงรายละเอียดขั้นตอนการลิงก์บัญชีที่อาจเกิดขึ้นหากคุณเปิดใช้ การสร้างบัญชีผ่านเสียง

ขั้นตอนที่ 1: มีข้อมูลของผู้ใช้อยู่ในระบบของคุณ

ในกรณีนี้ ผู้ใช้ที่ระบุด้วย user@gmail.com มีอยู่ในแบ็กเอนด์ของคุณ เพื่อให้ปลายทางการแลกเปลี่ยนโทเค็นแสดงโทเค็นสำหรับผู้ใช้ รายงาน ข้อมูลประจำตัวใน "การดำเนินการ" ของคุณลิงก์กับบัญชี Google ของบุคคลดังกล่าวแล้ว รายงาน คำขอเดิม (“สั่งซื้อตามปกติ”) ตรงกับความตั้งใจที่กำหนดเอง order_drink. จากนั้นเว็บฮุคจะจัดการการดำเนินการสำหรับความตั้งใจที่ตรงกันและคำค้นหา ฐานข้อมูลสำหรับคำสั่งซื้อตามปกติของ user@gmail.com จากนั้นผู้ใช้จึงจะดำเนินการต่อ การสนทนากับ Assistant

ขั้นตอนที่ 2: ไม่มีข้อมูลของผู้ใช้และผู้ใช้สร้างบัญชี

เนื่องจากคุณเปิดใช้การสร้างบัญชีผ่านเสียงและ user@gmail.com ไม่ได้ อยู่ในแบ็กเอนด์ของคุณ Assistant จะถามผู้ใช้ว่าต้องการทําหรือไม่ อย่างใดอย่างหนึ่งต่อไปนี้

ก) สร้างบัญชีใหม่ในระบบของคุณโดยใช้ข้อมูลโปรไฟล์ Google ซึ่งทำได้ด้วยเสียง

ข) ลงชื่อเข้าใช้ระบบด้วยบัญชีอื่น

ในกรณีนี้ ผู้ใช้เลือกที่จะสร้างบัญชีใหม่ผ่านทางเสียง การโทรจาก Google ปลายทางการแลกเปลี่ยนโทเค็นของบริการที่มีคำขอสร้างบัญชี คำขอนี้มีโทเค็นรหัส Google ซึ่งมีคอมโพเนนต์ที่จำเป็น เพื่อสร้างบัญชีใหม่ จากนั้นคุณสามารถใช้ข้อมูลจากโทเค็นนี้ (ชื่อและที่อยู่อีเมลของผู้ใช้) เพื่อสร้างบัญชีให้กับผู้ใช้

หลังจากสร้างบัญชีแล้ว บริการจะส่งคืนโทเค็นเพื่อการเข้าถึงและรีเฟรช สำหรับบัญชีที่สร้างขึ้นใหม่ ตอนนี้ข้อมูลประจำตัวของผู้ใช้ในการดำเนินการของคุณคือ ที่ลิงก์กับบัญชี Google ของตัวเอง คำขอเดิมของผู้ใช้ (“สั่งซื้อตามปกติ”) ตรงกับความตั้งใจที่กำหนดเอง order_drink. จากนั้นเว็บฮุคจะจัดการ ตอบสนองความตั้งใจที่ตรงกันและค้นหาฐานข้อมูล คำสั่งซื้อตามปกติของ user@gmail.com ซึ่งยังไม่มีเพราะเป็นผู้ใช้ใหม่ จากนั้นการดำเนินการจะถามผู้ใช้ว่าจะสั่งซื้ออะไร

ขั้นตอนที่ 3: ไม่มีข้อมูลของผู้ใช้และผู้ใช้ลงชื่อเข้าใช้ด้วยบัญชีอื่น

คุณเปิดใช้การสร้างบัญชีผ่านเสียง ดังนั้น Assistant จึงถามผู้ใช้ว่า ลูกค้าต้องการดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

ก) สร้างบัญชีใหม่ในระบบของคุณโดยใช้ข้อมูลโปรไฟล์ Google ซึ่งทำได้ด้วยเสียง

ข) ลงชื่อเข้าใช้ระบบด้วยบัญชีอื่น

ในกรณีนี้ ผู้ใช้เลือกที่จะลงชื่อเข้าใช้ด้วยบัญชีอื่น เริ่มต้นขั้นตอน OAuth มาตรฐาน หากขั้นตอนเริ่มต้นในอุปกรณ์ที่มีแต่เสียง Google จะโอนการดำเนินการไปยังโทรศัพท์ จากนั้น Google จะเปิด ปลายทางการให้สิทธิ์ในเบราว์เซอร์ของผู้ใช้ และขึ้นอยู่กับ การกำหนดค่า ผู้ใช้เลือกได้ว่าจะ ก) ลงชื่อเข้าใช้บริการของคุณด้วย บัญชีที่มีอยู่ซึ่งไม่ได้ใช้การลงชื่อเข้าใช้ Google หรือ ข) สร้างบัญชีใหม่ ใช้ผู้ให้บริการรายอื่น โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอน OAuth ที่ คู่มือแนวคิด OAuth

หลังจากยืนยันข้อมูลเข้าสู่ระบบของผู้ใช้แล้ว บริการของคุณจะส่งโทเค็นเพื่อการเข้าถึงคืน และโทเค็นการรีเฟรชไปยัง Google ลิงก์ข้อมูลประจำตัวของผู้ใช้ในการดําเนินการของคุณแล้ว บัญชีที่ไม่ใช่ของ Google คำขอเดิมของผู้ใช้ ("สั่งซื้อตามปกติของฉัน") ตรงกับ ความตั้งใจที่กำหนดเอง order_drink. จากนั้นเว็บฮุคจะจัดการการดำเนินการตาม ความตั้งใจที่ตรงกันและค้นหาฐานข้อมูล ตามลำดับตามปกติของ user@gmail.com ซึ่งยังไม่มี เนื่องจากผู้ใช้รายนี้เป็นผู้ใช้ใหม่ การดำเนินการของคุณจะขอให้ สิ่งที่ผู้ใช้ต้องการสั่งซื้อ หรือขอให้ตั้งค่าการสั่งซื้อตามปกติ

ขั้นตอนการสร้างบัญชีเสียงปิดอยู่

ส่วนนี้จะแสดงรายละเอียดขั้นตอนการลิงก์บัญชีที่อาจเกิดขึ้นหากคุณปิดใช้ การสร้างบัญชีผ่านเสียง

กระบวนการที่ 4: ไม่มีข้อมูลของผู้ใช้

คุณไม่ได้เปิดใช้งานการสร้างบัญชีผ่านเสียง และผู้ใช้ไม่ได้อยู่ใน เพื่อให้ขั้นตอน OAuth มาตรฐานเริ่มต้นขึ้น Assistant จะเปิด ปลายทางการให้สิทธิ์ในเบราว์เซอร์ของผู้ใช้ (หากขั้นตอนเริ่มต้นด้วยเสียงเท่านั้น Google จะโอนการดำเนินการไปยังอุปกรณ์ที่มีหน้าจอ) ผู้ใช้สามารถ ให้เลือก ก) ลงชื่อเข้าใช้ด้วยผู้ให้บริการรายอื่น หากผู้ให้บริการรายนั้นได้ลงทะเบียนไว้ บริการของคุณโดยใช้บัญชีอื่น หรือ ข) สร้างบัญชีใหม่ จากผู้ให้บริการรายอื่น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอน OAuth โปรดดูที่ คู่มือแนวคิด OAuth

หลังจากยืนยันข้อมูลเข้าสู่ระบบของผู้ใช้แล้ว บริการของคุณจะส่งโทเค็นเพื่อการเข้าถึงคืน และโทเค็นการรีเฟรชไปยัง Google ลิงก์ข้อมูลประจำตัวของผู้ใช้ในการดําเนินการของคุณแล้ว บัญชีที่ไม่ใช่ของ Google คำขอเดิมของผู้ใช้ ("สั่งซื้อตามปกติของฉัน") ตรงกับ ความตั้งใจที่กำหนดเอง order_drink. จากนั้นเว็บฮุคจะจัดการการดำเนินการตาม ความตั้งใจที่ตรงกันและค้นหาฐานข้อมูล ตามลำดับตามปกติของ user@gmail.com ซึ่งยังไม่มี เนื่องจากผู้ใช้รายนี้เป็นผู้ใช้ใหม่ การดำเนินการของคุณจะขอให้ วิธีตั้งค่าลำดับตามปกติ