ภาพรวม
การลงชื่อเข้าใช้ด้วย Google ที่ใช้ OAuth พร้อมการลิงก์ที่ปรับปรุงแล้วจะเพิ่มการลงชื่อเข้าใช้ด้วย Google ที่ด้านบนของการลิงก์ OAuth ซึ่งจะมอบประสบการณ์การลิงก์ที่ราบรื่น สำหรับผู้ใช้ Google และยังช่วยให้สร้างบัญชีได้ด้วย ซึ่งจะช่วยให้ ผู้ใช้สร้างบัญชีใหม่ในบริการของคุณโดยใช้บัญชี Google ได้
หากต้องการลิงก์บัญชีด้วย OAuth และลงชื่อเข้าใช้ด้วย Google ให้ทำตามขั้นตอนทั่วไปต่อไปนี้
- ก่อนอื่น ให้ขอความยินยอมจากผู้ใช้เพื่อเข้าถึงโปรไฟล์ Google
- ใช้ข้อมูลในโปรไฟล์เพื่อตรวจสอบว่ามีบัญชีผู้ใช้หรือไม่
- สำหรับผู้ใช้เดิม ให้ลิงก์บัญชี
- หากไม่พบผู้ใช้ Google ที่ตรงกันในระบบการตรวจสอบสิทธิ์ ให้ตรวจสอบโทเค็นรหัสที่ได้รับจาก Google จากนั้นคุณจะสร้างผู้ใช้โดยอิงตามข้อมูลโปรไฟล์ที่มีอยู่ในโทเค็นรหัสได้
รูปที่ 1 การลิงก์บัญชีในโทรศัพท์ของผู้ใช้ด้วยการลิงก์ที่ปรับปรุงแล้ว
การลิงก์ที่มีประสิทธิภาพ: ขั้นตอน OAuth + ลงชื่อเข้าใช้ด้วย Google
แผนภาพลำดับต่อไปนี้แสดงรายละเอียดการโต้ตอบระหว่างผู้ใช้, Google และปลายทางการแลกเปลี่ยนโทเค็นสำหรับการลิงก์ที่ปรับปรุงแล้ว
บทบาทและความรับผิดชอบ
ตารางต่อไปนี้จะกำหนดบทบาทและความรับผิดชอบของผู้มีส่วนเกี่ยวข้องในขั้นตอนการลิงก์ที่ปรับปรุงแล้ว
| ผู้ดำเนินการ / คอมโพเนนต์ | บทบาท GAL | หน้าที่รับผิดชอบ |
|---|---|---|
| แอป / เซิร์ฟเวอร์ของ Google | ไคลเอ็นต์ OAuth | ขอความยินยอมจากผู้ใช้สำหรับการลงชื่อเข้าใช้ด้วย Google ส่งการยืนยันตัวตน (JWT) ไปยังเซิร์ฟเวอร์ และจัดเก็บโทเค็นที่ได้ไว้อย่างปลอดภัย |
| ปลายทางการแลกเปลี่ยนโทเค็นของคุณ | ผู้ให้บริการข้อมูลประจำตัว / เซิร์ฟเวอร์การให้สิทธิ์ | ตรวจสอบการยืนยันตัวตน ตรวจสอบบัญชีที่มีอยู่ จัดการ
ความตั้งใจในการลิงก์บัญชี (check, get,
create) และออกโทเค็นตามความตั้งใจที่ขอ
|
| API ของบริการ | เซิร์ฟเวอร์ทรัพยากร | ให้สิทธิ์เข้าถึงข้อมูลผู้ใช้เมื่อแสดงโทเค็นเพื่อการเข้าถึงที่ถูกต้อง |
ข้อกำหนดสำหรับการลิงก์ที่ง่ายขึ้น
- ใช้โฟลว์การลิงก์ OAuth พื้นฐาน บริการของคุณต้อง รองรับปลายทางการให้สิทธิ์และการแลกเปลี่ยนโทเค็นที่สอดคล้องกับ OAuth 2.0
- ปลายทางการแลกเปลี่ยนโทเค็นต้องรองรับการยืนยันโทเค็นเว็บ JSON (JWT) และใช้
checkcreateและเจตนาget
ตรรกะการตัดสินใจสำหรับการลิงก์ที่มีประสิทธิภาพ
ตรรกะต่อไปนี้จะกำหนดวิธีการเรียกใช้ Intent ในระหว่างขั้นตอนการลิงก์ที่ปรับปรุงแล้ว
- ผู้ใช้มีบัญชีในระบบการตรวจสอบสิทธิ์ของคุณไหม (ผู้ใช้ตัดสินใจโดยเลือก "ใช่" หรือ "ไม่")
- ใช่ : ผู้ใช้ใช้อีเมลที่เชื่อมโยงกับบัญชี Google เพื่อลงชื่อเข้าใช้แพลตฟอร์มของคุณหรือไม่ (ผู้ใช้ตัดสินใจโดยเลือก "ใช่" หรือ "ไม่")
- ใช่ : ผู้ใช้มีบัญชีที่ตรงกันในระบบการตรวจสอบสิทธิ์ของคุณไหม (โทรหา
check intentเพื่อยืนยัน)- ใช่ : ระบบจะเรียกใช้
get intentและลิงก์บัญชีหาก get intent แสดงผลสำเร็จ - ไม่ : สร้างบัญชีใหม่ใช่ไหม (ผู้ใช้ตัดสินใจโดยเลือก "ใช่" หรือ "ไม่")
- ใช่ :
create intentจะได้รับการเรียกใช้และระบบจะลิงก์บัญชีหากความตั้งใจในการสร้างสำเร็จ - ไม่ : ระบบจะทริกเกอร์ขั้นตอนการลิงก์ OAuth, นำผู้ใช้ไปยังเบราว์เซอร์ และให้ตัวเลือกแก่ผู้ใช้ในการลิงก์กับอีเมลอื่น
- ใช่ :
- ใช่ : ระบบจะเรียกใช้
- ไม่ : ระบบจะทริกเกอร์ขั้นตอนการลิงก์ OAuth โดยจะนำผู้ใช้ไปยังเบราว์เซอร์และให้ตัวเลือกแก่ผู้ใช้ในการลิงก์กับอีเมลอื่น
- ใช่ : ผู้ใช้มีบัญชีที่ตรงกันในระบบการตรวจสอบสิทธิ์ของคุณไหม (โทรหา
- ไม่ : ผู้ใช้มีบัญชีที่ตรงกันในระบบการตรวจสอบสิทธิ์ของคุณหรือไม่ (โทรหา
check intentเพื่อยืนยัน)- ใช่ : ระบบจะเรียกใช้
get intentและลิงก์บัญชีหาก get intent แสดงผลสำเร็จ - NO :
create intentจะได้รับการเรียกใช้และระบบจะลิงก์บัญชีหากความตั้งใจในการสร้างสำเร็จ
- ใช่ : ระบบจะเรียกใช้
- ใช่ : ผู้ใช้ใช้อีเมลที่เชื่อมโยงกับบัญชี Google เพื่อลงชื่อเข้าใช้แพลตฟอร์มของคุณหรือไม่ (ผู้ใช้ตัดสินใจโดยเลือก "ใช่" หรือ "ไม่")
สูตรการติดตั้งใช้งาน
ปลายทางการแลกเปลี่ยนโทเค็นต้องใช้ Intent check, get และ create เพื่อรองรับการลิงก์ที่ง่ายขึ้น
ทำตามขั้นตอนต่อไปนี้เพื่อจัดการเจตนาต่างๆ
ตรวจสอบบัญชีผู้ใช้ที่มีอยู่ (ตรวจสอบความตั้งใจ)
Google จะเรียกปลายทางของการแลกเปลี่ยนโทเค็นเพื่อยืนยันว่าผู้ใช้ Google มีอยู่ในระบบของคุณหรือไม่ ดูรายละเอียดพารามิเตอร์ได้ที่ความตั้งใจในการลิงก์ที่ปรับปรุงแล้ว
สูตรการใช้งาน
หากต้องการจัดการความตั้งใจ check ให้ทำดังนี้
ตรวจสอบคำขอ:
- ยืนยัน
client_id,client_secretและgrant_type(ต้องเป็นurn:ietf:params:oauth:grant-type:jwt-bearer) - ตรวจสอบ
assertion(JWT) โดยใช้เกณฑ์ในการ ตรวจสอบ JWT
- ยืนยัน
ค้นหาผู้ใช้:
- ตรวจสอบว่ารหัสบัญชี Google (
sub) หรืออีเมลใน JWT ตรงกับผู้ใช้ในฐานข้อมูลของคุณหรือไม่
- ตรวจสอบว่ารหัสบัญชี Google (
ตอบสนอง:
- หากพบ ให้แสดงผล HTTP
200 OKพร้อม{"account_found": "true"} - หากไม่พบ ให้แสดงผล HTTP
404 Not Foundพร้อม{"account_found": "false"}
- หากพบ ให้แสดงผล HTTP
Handle automatic linking (get intent)
If the account exists, Google calls your endpoint with intent=get to retrieve tokens. For parameter details, see Streamlined Linking Intents.
Implementation Recipe
To handle the get intent, perform the following actions:
Validate the request:
- Verify
client_id,client_secret, andgrant_type. - Validate the
assertion(JWT).
- Verify
Lookup user:
- Verify the user exists using the
suboremailclaim.
- Verify the user exists using the
Respond:
- If successful: Generate and return
access_token,refresh_token, andexpires_inin a JSON response (HTTP200 OK). - If linking fails: Return HTTP
401 Unauthorizedwith{"error": "linking_error"}and an optionallogin_hintto fall back to standard OAuth linking.
- If successful: Generate and return
Handle account creation using Sign in with Google (create intent)
If no account exists, Google calls your endpoint with intent=create to create a new user. For parameter details, see Streamlined Linking Intents.
Implementation Recipe
To handle the create intent, perform the following actions:
Validate the request:
- Verify
client_id,client_secret, andgrant_type. - Validate the
assertion(JWT).
- Verify
Verify user does not exist:
- Check if the
suboremailis already in your database. - If the user does exist: Return HTTP
401 Unauthorizedwith{"error": "linking_error", "login_hint": "USER_EMAIL"}to force fallback to OAuth linking.
- Check if the
Create account:
- Use the
sub,email,name, andpictureclaims from the JWT to create a new user record.
- Use the
Respond:
- Generate and return tokens in a JSON response (HTTP
200 OK).
- Generate and return tokens in a JSON response (HTTP
รับรหัสไคลเอ็นต์ Google API
คุณจะต้องระบุรหัสไคลเอ็นต์ Google API ในระหว่างกระบวนการลงทะเบียนการลิงก์บัญชี หากต้องการรับรหัสไคลเอ็นต์ API โดยใช้ โปรเจ็กต์ที่คุณสร้างขณะทำตามขั้นตอนการลิงก์ OAuth โดยทำตาม ขั้นตอนต่อไปนี้
- ไปที่หน้าไคลเอ็นต์
สร้างหรือเลือกโปรเจ็กต์ Google API
หากโปรเจ็กต์ไม่มีรหัสไคลเอ็นต์สำหรับประเภทเว็บแอปพลิเคชัน ให้คลิกสร้างไคลเอ็นต์เพื่อสร้าง อย่าลืมระบุโดเมนของเว็บไซต์ในช่องต้นทางของ JavaScript ที่ได้รับอนุญาต เมื่อทำการทดสอบในเครื่องหรือพัฒนา คุณต้องเพิ่มทั้ง
http://localhostและhttp://localhost:<port_number>ลงในช่องต้นทางของ JavaScript ที่ได้รับอนุญาต
ตรวจสอบการติดตั้งใช้งาน
คุณสามารถตรวจสอบการติดตั้งใช้งานได้โดยใช้เครื่องมือ OAuth 2.0 Playground
ในเครื่องมือ ให้ทำตามขั้นตอนต่อไปนี้
- คลิกการกำหนดค่า เพื่อเปิดหน้าต่างการกำหนดค่า OAuth 2.0
- ในช่องโฟลว์ OAuth ให้เลือกฝั่งไคลเอ็นต์
- ในช่องปลายทาง OAuth ให้เลือกกำหนดเอง
- ระบุปลายทาง OAuth 2.0 และรหัสไคลเอ็นต์ที่คุณกำหนดให้กับ Google ในช่องที่เกี่ยวข้อง
- ในส่วนขั้นตอนที่ 1 ไม่ต้องเลือกขอบเขตของ Google แต่ให้เว้นช่องนี้ว่างไว้หรือพิมพ์ขอบเขตที่ใช้ได้กับเซิร์ฟเวอร์ (หรือสตริงที่กำหนดเองหากคุณไม่ได้ใช้ขอบเขต OAuth) เมื่อเสร็จแล้ว ให้คลิกให้สิทธิ์ API
- ในส่วนขั้นตอนที่ 2 และขั้นตอนที่ 3 ให้ทำตามโฟลว์ OAuth 2.0 และตรวจสอบว่าแต่ละขั้นตอนทำงานตามที่ตั้งใจไว้
คุณสามารถตรวจสอบการติดตั้งใช้งานได้โดยใช้เครื่องมือสาธิตการลิงก์บัญชี Google
ในเครื่องมือ ให้ทำตามขั้นตอนต่อไปนี้
- คลิกปุ่มลงชื่อเข้าใช้ด้วย Google
- เลือกบัญชีที่ต้องการลิงก์
- ป้อนรหัสบริการ
- ป้อนขอบเขตอย่างน้อย 1 รายการที่คุณจะขอสิทธิ์เข้าถึง (ไม่บังคับ)
- คลิกเริ่มการสาธิต
- เมื่อได้รับข้อความแจ้ง ให้ยืนยันว่าคุณอาจให้ความยินยอมและปฏิเสธคำขอลิงก์
- ยืนยันว่าระบบจะนำคุณไปยังแพลตฟอร์มของคุณ