การลิงก์ Google Sign-In แบบ "ปรับปรุงให้ดียิ่งขึ้น" แบบ OAuth จะเพิ่ม Google Sign-In เพิ่มเติมจากการลิงก์บัญชีแบบ OAuth วิธีนี้ช่วยให้ผู้ใช้ Google ลิงก์ด้วยเสียงได้อย่างราบรื่น ขณะเดียวกันก็เปิดใช้การลิงก์บัญชีสำหรับผู้ใช้ที่ลงทะเบียนบริการด้วยข้อมูลประจำตัวที่ไม่ใช่ของ Google ด้วย
การลิงก์ประเภทนี้จะเริ่มต้นด้วย Google Sign-In ซึ่งให้คุณตรวจสอบได้ว่ามีข้อมูลโปรไฟล์ Google ของผู้ใช้อยู่ในระบบของคุณหรือไม่ หากไม่พบข้อมูลของผู้ใช้ในระบบของคุณ ขั้นตอน OAuth มาตรฐานจะเริ่มต้น ผู้ใช้ยังสามารถเลือกสร้างบัญชีใหม่ด้วยข้อมูลโปรไฟล์ Google ของตนเองได้อีกด้วย
หากต้องการลิงก์บัญชีด้วยประเภทการลิงก์ที่ปรับปรุงใหม่ ให้ทำตามขั้นตอนทั่วไปต่อไปนี้
- ขั้นแรก ขอให้ผู้ใช้ให้คำยินยอมในการเข้าถึงโปรไฟล์ Google ของตน
- ใช้ข้อมูลในโปรไฟล์เพื่อระบุตัวผู้ใช้
- หากไม่พบข้อมูลที่ตรงกันสำหรับผู้ใช้ Google ในระบบการตรวจสอบสิทธิ์ ขั้นตอนการดำเนินการจะดำเนินต่อไปโดยขึ้นอยู่กับว่าคุณได้กำหนดค่าโปรเจ็กต์ Actions ในคอนโซล Actions เพื่ออนุญาตการสร้างบัญชีผู้ใช้ด้วยเสียงหรือดำเนินการในเว็บไซต์เท่านั้น
- หากคุณอนุญาตให้สร้างบัญชีผ่านทางเสียง ให้ตรวจสอบโทเค็นรหัสที่ได้รับจาก Google จากนั้นคุณสามารถสร้างผู้ใช้ตามข้อมูลโปรไฟล์ที่มีอยู่ในโทเค็นรหัส
- หากคุณไม่อนุญาตให้สร้างบัญชีผ่านเสียง ระบบจะโอนผู้ใช้ไปยังเบราว์เซอร์ที่ผู้ใช้จะโหลดหน้าการให้สิทธิ์และทำตามขั้นตอนการสร้างผู้ใช้จนเสร็จ
รองรับการสร้างบัญชีผ่านเสียง
หากคุณอนุญาตให้สร้างบัญชีผู้ใช้ผ่านเสียง Assistant จะถามผู้ใช้ว่าต้องการทำสิ่งต่อไปนี้หรือไม่
- สร้างบัญชีใหม่ในระบบของคุณโดยใช้ข้อมูลบัญชี Google หรือ
- ลงชื่อเข้าใช้ระบบการตรวจสอบสิทธิ์ด้วยบัญชีอื่นหากบัญชีมีบัญชีที่ไม่ใช่ของ Google อยู่
เราขอแนะนำให้อนุญาตให้สร้างบัญชีผ่านเสียงหากต้องการลดความยุ่งยากในขั้นตอนการสร้างบัญชี ผู้ใช้ต้องออกจากขั้นตอนการสั่งงานด้วยเสียง เมื่อต้องการลงชื่อเข้าใช้โดยใช้บัญชีที่ไม่ใช่ของ Google ที่มีอยู่
ไม่อนุญาตให้สร้างบัญชีผ่านเสียง
หากคุณไม่อนุญาตให้สร้างบัญชีผู้ใช้ผ่านเสียง Assistant จะเปิด URL ของเว็บไซต์ที่คุณให้ไว้สำหรับการตรวจสอบสิทธิ์ผู้ใช้ หากการโต้ตอบเกิดขึ้นในอุปกรณ์ที่ไม่มีหน้าจอ Assistant จะนำผู้ใช้ไปยังโทรศัพท์เพื่อดำเนินการลิงก์บัญชีต่อ
เราขอแนะนำให้ไม่อนุญาตให้สร้างในกรณีต่อไปนี้
คุณไม่ต้องการให้ผู้ใช้ที่มีบัญชีที่ไม่ใช่ของ Google สามารถสร้างบัญชีผู้ใช้ใหม่ และต้องการให้เชื่อมโยงกับบัญชีผู้ใช้ที่มีอยู่เดิมในระบบการตรวจสอบสิทธิ์แทน เช่น ถ้าคุณนำเสนอโปรแกรมสะสมคะแนน คุณอาจต้องการตรวจสอบว่าผู้ใช้จะไม่สูญเสียคะแนนสะสมในบัญชีที่มีอยู่
คุณต้องควบคุมขั้นตอนการสร้างบัญชีได้อย่างสมบูรณ์ เช่น คุณไม่อนุญาตให้สร้างได้หากต้องการแสดงข้อกำหนดในการให้บริการแก่ผู้ใช้ในระหว่างการสร้างบัญชี
ใช้การลิงก์ "ปรับปรุง" ใน Google Sign-In ที่ใช้ OAuth
โดยบัญชีต่างๆ จะเชื่อมโยงกับขั้นตอน OAuth 2.0 ที่เป็นมาตรฐานอุตสาหกรรม Actions on Google รองรับขั้นตอนของรหัสการให้สิทธิ์และโดยนัย
เพื่อช่วยให้กระบวนการตรวจสอบง่ายขึ้นในขั้นตอนการเขียนโค้ดแบบโดยนัย Google จะเปิดปลายทางการให้สิทธิ์ในเบราว์เซอร์ของผู้ใช้ เมื่อลงชื่อเข้าใช้สําเร็จ คุณจะส่งคืนโทเค็นเพื่อการเข้าถึงที่ใช้ได้นานแก่ Google ตอนนี้โทเค็นเพื่อการเข้าถึงนี้รวมอยู่ในคําขอทุกรายการที่ส่งจาก Assistant ไปยังการดําเนินการของคุณแล้ว
ในกระบวนการรหัสการให้สิทธิ์ คุณต้องมีปลายทาง 2 จุด ได้แก่
- ปลายทางการให้สิทธิ์ ซึ่งมีหน้าที่นําเสนอ UI การลงชื่อเข้าใช้แก่ผู้ใช้ที่ไม่ได้ลงชื่อเข้าใช้ และยินยอมให้มีการเข้าถึงการเข้าถึงที่ขอในรูปของรหัสการให้สิทธิ์ระยะสั้น
- ปลายทางของการแลกเปลี่ยนโทเค็นที่มีหน้าที่รับผิดชอบการแลกเปลี่ยน 2 ประเภท ได้แก่
- แลกเปลี่ยนรหัสการให้สิทธิ์สําหรับโทเค็นการรีเฟรชที่ใช้ได้นานและโทเค็นเพื่อการเข้าถึงที่ใช้ได้นาน การแลกเปลี่ยนนี้จะเกิดขึ้นเมื่อผู้ใช้เข้าสู่ กระบวนการเชื่อมโยงบัญชี
- แลกเปลี่ยนโทเค็นการรีเฟรชที่ใช้ได้นานกับโทเค็นเพื่อการเข้าถึงที่ใช้ได้ในระยะสั้น Exchange นี้จะเกิดขึ้นเมื่อ Google ต้องการโทเค็นเพื่อการเข้าถึงใหม่เนื่องจากโทเค็นหมดอายุ
แม้ว่าขั้นตอนการใช้รหัสโดยนัยจะง่ายกว่า Google ขอแนะนําว่าโทเค็นเพื่อการเข้าถึงที่ออกโดยใช้โฟลว์โดยนัยไม่มีวันหมดอายุ เนื่องจากการใช้การหมดอายุของโทเค็นด้วยขั้นตอนโดยนัยบังคับให้ผู้ใช้ลิงก์บัญชีอีกครั้ง หากคุณต้องการใช้การหมดอายุของโทเค็นด้วยเหตุผลด้านความปลอดภัย คุณควรพิจารณาการใช้ขั้นตอนการตรวจสอบสิทธิ์แทน
กำหนดค่าโปรเจ็กต์
หากต้องการกําหนดค่าโปรเจ็กต์ให้ใช้การลิงก์ที่มีประสิทธิภาพมากขึ้น ให้ทําตามขั้นตอนต่อไปนี้
- เปิดคอนโซล Actions แล้วเลือกโปรเจ็กต์ที่ต้องการใช้
- คลิกแท็บพัฒนา และเลือกการลิงก์บัญชี
- เปิดใช้สวิตช์ถัดจากการลิงก์บัญชี
- เลือกใช่ในส่วนการสร้างบัญชี
ในส่วนประเภทการลิงก์ ให้เลือก OAuth และ Google Sign In และโดยนัย
ในส่วนข้อมูลลูกค้า ให้ทำดังนี้
- กำหนดค่ารหัสลูกค้าที่ออกโดย Actions to Google เพื่อระบุคำขอที่มาจาก Google
- ใส่ URL สำหรับปลายทางการให้สิทธิ์และการแลกเปลี่ยนโทเค็น
คลิกบันทึก
ใช้งานเซิร์ฟเวอร์ OAuth
บริการของคุณจะกำหนดปลายทางการให้สิทธิ์ให้พร้อมใช้งานทาง HTTPS เพื่อรองรับโฟลว์แบบโดยนัยของ OAuth 2.0 ปลายทางนี้มีหน้าที่ในการตรวจสอบสิทธิ์และขอความยินยอมจากผู้ใช้สำหรับการเข้าถึงข้อมูล ปลายทางการให้สิทธิ์จะแสดง UI การลงชื่อเข้าใช้แก่ผู้ใช้ที่ยังไม่ได้ลงชื่อเข้าใช้และบันทึกคำยินยอมในการเข้าถึงที่ขอ
เมื่อการดำเนินการของคุณต้องเรียกใช้ API ที่ได้รับอนุญาตของบริการ Google จะใช้ปลายทางนี้เพื่อขออนุญาตจากผู้ใช้ในการเรียก API เหล่านี้ในนามของพวกเขา
เซสชันโฟลว์แบบไม่เจาะจงปลายทางของ OAuth 2.0 ที่ Google เป็นผู้เริ่มต้นจะมีขั้นตอนดังต่อไปนี้
- Google จะเปิดปลายทางการให้สิทธิ์ในเบราว์เซอร์ของผู้ใช้ ผู้ใช้จะลงชื่อเข้าใช้หากยังไม่ได้ลงชื่อเข้าใช้ และจะให้สิทธิ์ Google ในการเข้าถึงข้อมูลด้วย API ของคุณหากผู้ใช้ยังไม่ได้ให้สิทธิ์
- บริการของคุณจะสร้างโทเค็นเพื่อการเข้าถึงและส่งไปยัง Google โดยการเปลี่ยนเส้นทางเบราว์เซอร์ของผู้ใช้กลับไปยัง Google โดยมีโทเค็นเพื่อการเข้าถึงที่แนบมากับคำขอ
- Google เรียกใช้ API ของบริการและแนบโทเค็นเพื่อการเข้าถึงไปกับคำขอแต่ละรายการ บริการของคุณจะยืนยันว่าโทเค็นเพื่อการเข้าถึงได้ให้สิทธิ์ Google ในการเข้าถึง API และดำเนินการเรียก API จนเสร็จสมบูรณ์
จัดการคำขอการให้สิทธิ์
เมื่อการดำเนินการของคุณจำเป็นต้องลิงก์บัญชีผ่านขั้นตอนโดยนัยของ OAuth 2.0 Google จะส่งผู้ใช้ไปยังปลายทางการให้สิทธิ์พร้อมคำขอที่มีพารามิเตอร์ต่อไปนี้
พารามิเตอร์ปลายทางการให้สิทธิ์ | |
---|---|
client_id |
รหัสไคลเอ็นต์ที่คุณกำหนดให้ Google |
redirect_uri |
URL ที่คุณส่งการตอบกลับคำขอนี้ |
state |
ค่าการทำบัญชีที่ส่งกลับไปยัง Google โดยไม่มีการเปลี่ยนแปลงใน URI การเปลี่ยนเส้นทาง |
response_type |
ประเภทของค่าที่จะส่งคืนในคำตอบ สำหรับขั้นตอนโดยปริยายของ OAuth 2.0 ประเภทการตอบกลับจะเป็น token เสมอ |
ตัวอย่างเช่น หากปลายทางการให้สิทธิ์พร้อมใช้งานที่ https://myservice.example.com/auth
คำขออาจมีลักษณะดังนี้
GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token
หากต้องการให้ปลายทางการให้สิทธิ์จัดการคำขอลงชื่อเข้าใช้ ให้ทำตามขั้นตอนต่อไปนี้
ยืนยันค่า
client_id
และredirect_uri
เพื่อป้องกันการให้สิทธิ์เข้าถึงแอปไคลเอ็นต์ที่ไม่ได้ตั้งใจหรือกำหนดค่าไม่ถูกต้อง- ยืนยันว่า
client_id
ตรงกับรหัสไคลเอ็นต์ที่กำหนดให้กับ Google - ยืนยันว่า URL ที่ระบุโดยพารามิเตอร์
redirect_uri
มีรูปแบบต่อไปนี้https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
YOUR_PROJECT_ID คือรหัสที่อยู่ในหน้าการตั้งค่าโปรเจ็กต์ของคอนโซล Actions
- ยืนยันว่า
ตรวจสอบว่าผู้ใช้ลงชื่อเข้าใช้บริการของคุณหรือไม่ หากผู้ใช้ไม่ได้ลงชื่อเข้าใช้ ให้ทำตามขั้นตอนการลงชื่อเข้าใช้หรือลงชื่อสมัครใช้บริการให้เสร็จสิ้น
สร้างโทเค็นเพื่อการเข้าถึงที่ Google จะใช้เพื่อเข้าถึง API ของคุณ โทเค็นเพื่อการเข้าถึงอาจเป็นค่าสตริงใดก็ได้ แต่จะต้องแสดงถึงผู้ใช้และไคลเอ็นต์ที่โทเค็นนั้นใช้ได้โดยไม่ซ้ำกันและต้องคาดเดาไม่ได้
ส่งการตอบกลับ HTTP ที่เปลี่ยนเส้นทางเบราว์เซอร์ของผู้ใช้ไปยัง URL ที่พารามิเตอร์
redirect_uri
ระบุไว้ รวมพารามิเตอร์ต่อไปนี้ทั้งหมดในส่วนย่อยของ URLaccess_token
: โทเค็นเพื่อการเข้าถึงที่คุณเพิ่งสร้างtoken_type
: สตริงbearer
state
: ค่าสถานะที่ไม่มีการแก้ไขจากคำขอเดิม ต่อไปนี้คือตัวอย่างของ URL ที่ได้https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING
ตัวแฮนเดิลการเปลี่ยนเส้นทาง OAuth 2.0 ของ Google จะได้รับโทเค็นเพื่อการเข้าถึงและยืนยันว่าค่า state
ไม่มีการเปลี่ยนแปลง หลังจาก Google ได้รับโทเค็นเพื่อการเข้าถึงสำหรับบริการของคุณแล้ว Google จะแนบโทเค็นนั้นกับการเรียกการดำเนินการของคุณในภายหลังโดยเป็นส่วนหนึ่งของ AppRequest
จัดการการลิงก์อัตโนมัติ
หลังจากที่ผู้ใช้ให้คำยินยอมให้การดำเนินการของคุณเข้าถึงโปรไฟล์ Google แล้ว Google จะส่งคำขอที่มีการยืนยันตัวตนของผู้ใช้ Google ที่ลงลายมือชื่อแล้ว การยืนยันจะมีข้อมูลซึ่งประกอบด้วยรหัสบัญชี Google, ชื่อ และอีเมลของผู้ใช้ ปลายทางการแลกเปลี่ยนโทเค็นที่กำหนดค่าไว้สำหรับโปรเจ็กต์ของคุณจะจัดการกับคำขอนั้น
หากบัญชี Google ที่เกี่ยวข้องมีอยู่ในระบบการตรวจสอบสิทธิ์อยู่แล้ว ปลายทางการแลกเปลี่ยนโทเค็นจะแสดงโทเค็นให้กับผู้ใช้ หากบัญชี Google ไม่ตรงกับผู้ใช้ที่มีอยู่ ปลายทางการแลกเปลี่ยนโทเค็นจะแสดงข้อผิดพลาด user_not_found
โดยคำขอจะมีรูปแบบดังนี้
POST /token HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&intent=get&assertion=JWT&consent_code=CONSENT_CODE&scope=SCOPES
ปลายทางการแลกเปลี่ยนโทเค็นต้องจัดการพารามิเตอร์ต่อไปนี้ได้
พารามิเตอร์ปลายทางของโทเค็น | |
---|---|
grant_type |
ประเภทของโทเค็นที่แลกเปลี่ยน พารามิเตอร์นี้มีค่า urn:ietf:params:oauth:grant-type:jwt-bearer สำหรับคำขอเหล่านี้ |
intent |
สําหรับคําขอเหล่านี้ ค่าของพารามิเตอร์นี้คือ "get" |
assertion |
JSON Web Token (JWT) ที่มอบการยืนยันตัวตนของผู้ใช้ Google ที่ลงนามแล้ว JWT มีข้อมูลที่มีรหัสบัญชี Google, ชื่อ และอีเมลของผู้ใช้ |
consent_code |
ไม่บังคับ: รหัสแบบใช้ครั้งเดียวที่บ่งชี้ว่าผู้ใช้ยินยอมให้การดำเนินการของคุณเข้าถึงขอบเขตที่ระบุ |
scope |
ไม่บังคับ: ขอบเขตที่คุณกำหนดค่า Google ให้ขอจากผู้ใช้ |
เมื่อปลายทางการแลกเปลี่ยนโทเค็นได้รับคำขอลิงก์ อุปกรณ์ควรทำสิ่งต่อไปนี้
验证和解码 JWT 断言
您可以使用适合您的语言的 JWT 解码库来验证和解码 JWT 断言。使用 Google 的公钥(以 JWK 或 PEM 格式提供)来验证令牌的签名。
解码后,JWT 断言如下所示:
{ "sub": 1234567890, // The unique ID of the user's Google Account "iss": "https://accounts.google.com", // The assertion's issuer "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID "iat": 233366400, // Unix timestamp of the assertion's creation time "exp": 233370000, // Unix timestamp of the assertion'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" }
除了验证令牌的签名之外,请验证断言的颁发者(iss
字段)是否为 https://accounts.google.com
,以及目标对象群组(aud
字段)是否为分配给您的 Action 的客户端 ID。
ตรวจสอบว่ามีบัญชี Google อยู่ในระบบการตรวจสอบสิทธิ์อยู่แล้วหรือไม่
ตรวจสอบว่าเงื่อนไขใดเงื่อนไขหนึ่งต่อไปนี้เป็นจริง
- รหัสบัญชี Google ในช่อง
sub
ของการยืนยันจะอยู่ในฐานข้อมูลผู้ใช้ - อีเมลในการยืนยันตรงกับผู้ใช้ในฐานข้อมูลผู้ใช้
หากเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง แสดงว่าผู้ใช้ได้ลงชื่อสมัครใช้แล้วและคุณออกโทเค็นเพื่อการเข้าถึงได้
หากรหัสบัญชี Google และอีเมลที่ระบุในการยืนยันไม่ตรงกับผู้ใช้ในฐานข้อมูล แสดงว่าผู้ใช้ยังไม่ได้ลงชื่อสมัครใช้ ในกรณีนี้ ปลายทางการแลกเปลี่ยนโทเค็นควรตอบกลับด้วยข้อผิดพลาด HTTP 401 ที่ระบุ error=user_not_found
ตามตัวอย่างต่อไปนี้
HTTP/1.1 401 Unauthorized Content-Type: application/json;charset=UTF-8 { "error":"user_not_found", }เมื่อ Google ได้รับการตอบกลับที่เป็นข้อผิดพลาด 401 ที่แสดงข้อผิดพลาด
user_not_found
Google จะเรียกปลายทางการแลกเปลี่ยนโทเค็นด้วยค่าของพารามิเตอร์ intent
ที่ตั้งค่าเป็น สร้าง และส่งโทเค็นรหัสที่มีข้อมูลโปรไฟล์ของผู้ใช้พร้อมกับคำขอ
จัดการเรื่องการสร้างบัญชีผ่าน Google Sign-In
เมื่อผู้ใช้ต้องการสร้างบัญชีในบริการของคุณ Google จะส่งคำขอไปยังปลายทางการแลกเปลี่ยนโทเค็นที่ระบุ intent=create
ตามตัวอย่างต่อไปนี้
POST /token HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded response_type=token&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=SCOPES&intent=create&consent_code=CONSENT_CODE&assertion=JWT[&NEW_ACCOUNT_INFO]
พารามิเตอร์ assertion
มี JSON Web Token (JWT) ที่ใช้ยืนยันข้อมูลประจำตัวของผู้ใช้ Google ที่มีการลงนาม JWT มีข้อมูลที่ประกอบด้วยรหัสบัญชี Google, ชื่อ และที่อยู่อีเมลของผู้ใช้ ซึ่งคุณใช้เพื่อสร้างบัญชีใหม่ในบริการของคุณได้
หากต้องการตอบกลับคำขอสร้างบัญชี ปลายทางการแลกเปลี่ยนโทเค็นต้องทำดังนี้
验证和解码 JWT 断言
您可以使用适合您的语言的 JWT 解码库来验证和解码 JWT 断言。使用 Google 的公钥(以 JWK 或 PEM 格式提供)来验证令牌的签名。
解码后,JWT 断言如下所示:
{ "sub": 1234567890, // The unique ID of the user's Google Account "iss": "https://accounts.google.com", // The assertion's issuer "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID "iat": 233366400, // Unix timestamp of the assertion's creation time "exp": 233370000, // Unix timestamp of the assertion'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" }
除了验证令牌的签名之外,请验证断言的颁发者(iss
字段)是否为 https://accounts.google.com
,以及目标对象群组(aud
字段)是否为分配给您的 Action 的客户端 ID。
ตรวจสอบข้อมูลผู้ใช้และสร้างบัญชีใหม่
ตรวจสอบว่าเงื่อนไขใดเงื่อนไขหนึ่งต่อไปนี้เป็นจริง
- รหัสบัญชี Google ในช่อง
sub
ของการยืนยันจะอยู่ในฐานข้อมูลผู้ใช้ - อีเมลในการยืนยันตรงกับผู้ใช้ในฐานข้อมูลผู้ใช้
หากเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง ให้แจ้งให้ผู้ใช้ลิงก์บัญชีที่มีอยู่กับบัญชี Google โดยตอบกลับคำขอด้วยข้อผิดพลาด HTTP 401 โดยระบุ error=linking_error
และอีเมลของผู้ใช้เป็น login_hint
ตามตัวอย่างต่อไปนี้
HTTP/1.1 401 Unauthorized Content-Type: application/json;charset=UTF-8 { "error":"linking_error", "login_hint":"foo@bar.com" }
หากไม่มีเงื่อนไขใดเป็นจริง ให้สร้างบัญชีผู้ใช้ใหม่โดยใช้ข้อมูลที่ให้ไว้ใน JWT บัญชีใหม่มักจะไม่มีชุดรหัสผ่าน ขอแนะนำให้คุณเพิ่ม Google Sign-In ในแพลตฟอร์มอื่นๆ เพื่อให้ผู้ใช้ลงชื่อเข้าสู่ระบบผ่าน Google ในแพลตฟอร์มต่างๆ ของแอปพลิเคชันได้ หรือคุณจะส่งอีเมลหาลิงก์ที่เริ่มต้นขั้นตอนการกู้คืนรหัสผ่านเพื่อให้ผู้ใช้ตั้งรหัสผ่านสำหรับลงชื่อเข้าใช้ในแพลตฟอร์มอื่นๆ ก็ได้
เมื่อสร้างเสร็จแล้ว ให้ออกโทเค็นเพื่อการเข้าถึง แล้วแสดงผลค่าในออบเจ็กต์ JSON ในส่วนเนื้อหาของการตอบสนอง HTTPS ดังตัวอย่างต่อไปนี้
{ "token_type": "Bearer", "access_token": "ACCESS_TOKEN", "expires_in": SECONDS_TO_EXPIRATION }
ออกแบบอินเทอร์เฟซผู้ใช้แบบเสียงสำหรับขั้นตอนการตรวจสอบสิทธิ์
ตรวจสอบว่าผู้ใช้ได้รับการยืนยันหรือไม่ และเริ่มขั้นตอนการลิงก์บัญชี
- เปิดโปรเจ็กต์ Actions Builder ในคอนโซล Actions
- สร้างฉากใหม่เพื่อเริ่มลิงก์บัญชีใน Action ของคุณ
- คลิกฉาก
- คลิกไอคอนเพิ่ม (+) เพื่อเพิ่มฉากใหม่
- ในโหมดที่สร้างขึ้นใหม่ ให้คลิกไอคอนเพิ่ม add สำหรับเงื่อนไข
- เพิ่มเงื่อนไขที่ตรวจสอบว่าผู้ใช้ที่เชื่อมโยงกับการสนทนาเป็นผู้ใช้ที่ได้รับการยืนยันหรือไม่ หากการตรวจสอบไม่สำเร็จ การดำเนินการของคุณจะไม่สามารถลิงก์บัญชีในระหว่างการสนทนา และควรกลับไปให้สิทธิ์เข้าถึงฟังก์ชันการทำงานที่ไม่จำเป็นต้องมีการลิงก์บัญชี
- ในช่อง
Enter new expression
ในส่วนเงื่อนไข ให้ป้อนตรรกะต่อไปนี้user.verificationStatus != "VERIFIED"
- ในส่วนการเปลี่ยน ให้เลือกฉากที่ไม่ต้องมีการลิงก์บัญชีหรือฉากที่เป็นจุดเข้าถึงฟังก์ชันการทำงานสำหรับผู้มาเยือนเท่านั้น
- ในช่อง
- คลิกไอคอนเพิ่ม add สำหรับเงื่อนไข
- เพิ่มเงื่อนไขเพื่อทริกเกอร์โฟลว์การลิงก์บัญชีหากผู้ใช้ไม่มีข้อมูลระบุตัวตนที่เชื่อมโยง
- ในช่อง
Enter new expression
ในส่วนเงื่อนไข ให้ป้อนตรรกะต่อไปนี้user.verificationStatus == "VERIFIED"
- ในส่วนการเปลี่ยน ให้เลือกโหมดระบบการลิงก์บัญชี
- คลิกบันทึก
- ในช่อง
เมื่อบันทึกแล้ว ระบบจะเพิ่มโหมดระบบการลิงก์บัญชีใหม่ที่ชื่อว่า <SceneName>_AccountLinking
ลงในโปรเจ็กต์
ปรับแต่งฉากการลิงก์บัญชี
- เลือกโหมดระบบการลิงก์บัญชีในส่วนฉาก
- คลิกส่งพรอมต์ แล้วเพิ่มประโยคสั้นๆ เพื่ออธิบายให้ผู้ใช้ทราบว่าทำไมการดำเนินการจึงจำเป็นต้องเข้าถึงข้อมูลประจำตัว (เช่น "เพื่อบันทึกค่ากำหนดของคุณ")
- คลิกบันทึก
- ในส่วนเงื่อนไข ให้คลิกหากผู้ใช้ลิงก์บัญชีสำเร็จแล้ว
- กำหนดค่าว่าขั้นตอนควรดำเนินการอย่างไรหากผู้ใช้ตกลงที่จะลิงก์บัญชี เช่น เรียกใช้เว็บฮุคเพื่อประมวลผลตรรกะทางธุรกิจที่กำหนดเองที่จำเป็น แล้วเปลี่ยนกลับไปยังฉากที่สร้างขึ้น
- คลิกบันทึก
- คลิกหากผู้ใช้ยกเลิกหรือปิดการลิงก์บัญชีในส่วนเงื่อนไข
- กำหนดค่าว่าขั้นตอนควรดำเนินการอย่างไรหากผู้ใช้ไม่ตกลงที่จะลิงก์บัญชี เช่น ส่งข้อความตอบรับและเปลี่ยนเส้นทางไปยังฉากที่มีฟังก์ชันการทำงานที่ไม่ต้องใช้การลิงก์บัญชี
- คลิกบันทึก
- ในส่วนเงื่อนไข ให้คลิกหากระบบหรือเครือข่ายเกิดข้อผิดพลาด
- กำหนดค่าว่าขั้นตอนควรดำเนินการอย่างไรหากดำเนินการลิงก์บัญชีไม่สำเร็จเนื่องจากข้อผิดพลาดของระบบหรือเครือข่าย เช่น ส่งข้อความตอบรับและเปลี่ยนเส้นทางไปยังฉากที่มีฟังก์ชันการทำงานที่ไม่ต้องใช้การลิงก์บัญชี
- คลิกบันทึก
จัดการคำขอเข้าถึงข้อมูล
หากคำขอ Assistant มีโทเค็นเพื่อการเข้าถึง ให้ตรวจสอบก่อนว่าโทเค็นเพื่อการเข้าถึงถูกต้องและไม่หมดอายุ จากนั้นให้ดึงข้อมูลบัญชีผู้ใช้ที่เชื่อมโยงกับโทเค็นนั้นจากฐานข้อมูลบัญชีผู้ใช้