Google Sign-In ที่ใช้ OAuth "ปรับปรุง" คู่มือแนวคิดการลิงก์

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

การลิงก์ที่มีประสิทธิภาพยิ่งขึ้นคือโซลูชันการลิงก์บัญชีที่แนะนำในกรณีต่อไปนี้

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

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

คำสำคัญ

ก่อนอ่านข้อมูลเกี่ยวกับวิธีการลิงก์ที่ปรับปรุงประสิทธิภาพ โปรดทำความคุ้นเคยกับคำศัพท์ต่อไปนี้

  • โทเค็นรหัส Google: การยืนยันที่ลงนามแล้วในข้อมูลประจำตัวของผู้ใช้ที่มีข้อมูลโปรไฟล์ Google พื้นฐานของผู้ใช้ (ชื่อ อีเมล และรูปโปรไฟล์) โทเค็น Google ID คือโทเค็นเว็บ 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"
}
  • user.verificationStatus: พร็อพเพอร์ตี้ที่ระบบกำหนดเพื่อระบุว่าเซสชันปัจจุบันมีผู้ใช้ที่ยืนยันแล้วหรือไม่

  • user.accountLinkingStatus: พร็อพเพอร์ตี้ที่ระบบกำหนดเพื่อระบุว่าผู้ใช้ในเซสชันปัจจุบันมีข้อมูลประจำตัวที่ลิงก์หรือไม่

  • โหมดของระบบการลิงก์บัญชี: โหมดที่กำหนดไว้ล่วงหน้าซึ่งใช้ขั้นตอนการยืนยันสำหรับการลิงก์บัญชีและปรับแต่งให้เหมาะกับกรณีการใช้งานที่เฉพาะเจาะจงได้

  • ขั้นตอนการใช้รหัสการให้สิทธิ์: ขั้นตอน OAuth 2.0 ที่คุณสามารถใช้กับการลิงก์ที่มีประสิทธิภาพยิ่งขึ้น ขั้นตอนนี้ต้องมีปลายทาง 2 แห่ง ดังนี้

    • ปลายทางการให้สิทธิ์: ปลายทางที่แสดง UI การลงชื่อเข้าใช้แก่ผู้ใช้ที่ยังไม่ได้ลงชื่อเข้าใช้ โดยจะบันทึกความยินยอมในการเข้าถึงที่ขอในรูปแบบของรหัสการให้สิทธิ์ที่มีอายุสั้น
    • ปลายทางการแลกเปลี่ยนโทเค็น: ปลายทางนี้จะรับผิดชอบการแลกเปลี่ยน 2 ประเภทดังนี้
      1. แลกเปลี่ยนรหัสการให้สิทธิ์เป็นโทเค็นการรีเฟรชที่ใช้ได้นานกับโทเค็นเพื่อการเข้าถึงที่มีอายุสั้น ซึ่งการแลกเปลี่ยนนี้จะเกิดขึ้นเมื่อผู้ใช้ทำตามขั้นตอนการลิงก์บัญชี
      2. แลกเปลี่ยนโทเค็นการรีเฟรชที่ใช้ได้นานกับโทเค็นเพื่อการเข้าถึงที่ใช้ได้ระยะสั้น การแลกเปลี่ยนนี้เกิดขึ้นเมื่อ Google ต้องการโทเค็นเพื่อการเข้าถึงใหม่ เนื่องจากโทเค็นดังกล่าวหมดอายุแล้ว
  • โฟลว์ของรหัสโดยนัย: ขั้นตอน OAuth 2.0 ที่คุณใช้กับการลิงก์ที่ปรับปรุงใหม่ได้ ขั้นตอนนี้ต้องใช้เพียงปลายทางการให้สิทธิ์เท่านั้น ระหว่างขั้นตอนนี้ Google จะเปิดปลายทางการให้สิทธิ์ในเบราว์เซอร์ของผู้ใช้ หากลงชื่อเข้าใช้สำเร็จ คุณจะส่งคืนโทเค็นเพื่อการเข้าถึงที่ใช้ได้นานให้ Google ตอนนี้โทเค็นเพื่อการเข้าถึงนี้จะรวมอยู่ในทุกคำขอที่ส่งจาก Assistant ไปยังการดำเนินการของคุณ

  • โทเค็นเพื่อการเข้าถึง: โทเค็นที่ให้สิทธิ์บริการของคุณเข้าถึงข้อมูลบางส่วนของผู้ใช้ โทเค็นเพื่อการเข้าถึงจะเชื่อมโยงกับผู้ใช้แต่ละราย

  • โทเค็นเพื่อการเข้าถึง: โทเค็นที่แลกเปลี่ยนกับโทเค็นเพื่อการเข้าถึงใหม่เมื่อโทเค็นเพื่อการเข้าถึงที่มีอายุสั้นหมดอายุ

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

หากต้องการใช้ประเภทการลิงก์ที่ปรับปรุงใหม่ คุณต้องมีสิ่งต่อไปนี้

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

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

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

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

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

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

ขั้นตอนการลิงก์ที่มีประสิทธิภาพมากขึ้น

ส่วนนี้จะอธิบายขั้นตอนต่างๆ ที่อาจเกิดขึ้นกับการลิงก์ที่ได้รับการปรับปรุงให้ดีขึ้น แผนภาพเหล่านี้อธิบายโฟลว์ที่เกิดขึ้นกับขั้นตอนรหัสการให้สิทธิ์ ไม่ใช่โฟลว์ของรหัสโดยนัย และสมมติว่าคุณใช้ Actions Builder

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

ในขั้นตอนด้านบน คุณจะเปลี่ยนไปใช้โหมดระบบการลิงก์บัญชีและให้เหตุผลที่กำหนดเอง ฉากขอสิทธิ์จากผู้ใช้ ในการเข้าถึงข้อมูลโปรไฟล์ 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. จากนั้นเว็บฮุคจะดำเนินการตาม Intent ที่ตรงกันและค้นหาฐานข้อมูลสำหรับคำสั่งซื้อปกติของ user@gmail.com ซึ่งยังไม่มีเนื่องจากเป็นผู้ใช้ใหม่ จากนั้นการดำเนินการของคุณจะถามผู้ใช้ว่าต้องการสั่งซื้ออะไร

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

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

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

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

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

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

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

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

ขั้นตอนที่ 4: ไม่มีข้อมูลของผู้ใช้

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

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