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

ข้อกำหนด
- คุณต้องสื่อสารว่าบัญชีของผู้ใช้จะลิงก์กับ Google ไม่ใช่ผลิตภัณฑ์บางอย่างของ Google เช่น Google Home หรือ Google Assistant
- คุณต้องมีข้อความการให้สิทธิ์ของ Google เช่น "การลงชื่อเข้าใช้แสดงว่าคุณอนุญาตให้ Google ควบคุมอุปกรณ์ของคุณ" ดูส่วนการให้สิทธิ์ควบคุมอุปกรณ์ Google ของนโยบายสำหรับนักพัฒนาแอป Google Home
- คุณต้องระบุวิธีให้ผู้ใช้ย้อนกลับหรือยกเลิก หากผู้ใช้เลือกที่จะไม่ลิงก์
- คุณต้องเปิดหน้าการลิงก์ OAuth ของเว็บและตรวจสอบว่าผู้ใช้มีวิธีลงชื่อเข้าใช้บัญชี Google ที่ชัดเจน เช่น ช่องสำหรับชื่อผู้ใช้และรหัสผ่าน อย่าใช้เมธอด Google Sign-In (GSI) ที่ช่วยให้ผู้ใช้ลิงก์ได้โดยไม่ต้องถูกนำไปที่หน้าการลิงก์ OAuth บนเว็บ พฤติกรรมละเมิดนโยบายของ Google
การแนะนำวิดีโอ
เราขอแนะนำให้คุณทำดังนี้
แสดงนโยบายความเป็นส่วนตัวของ Google ใส่ลิงก์ไปยังนโยบายความเป็นส่วนตัวของ Google ไว้บนหน้าจอขอความยินยอม
ข้อมูลที่จะแชร์ ใช้ภาษาที่ชัดเจนและกระชับเพื่อแจ้งให้ผู้ใช้ทราบว่า Google ต้องการข้อมูลใดและเพราะเหตุใด
คำกระตุ้นให้ดำเนินการที่ชัดเจน ระบุคำกระตุ้นให้ดำเนินการ (Call-To-Action) ที่ชัดเจนในหน้าจอความยินยอม เช่น "ยอมรับและลิงก์" เนื่องจากผู้ใช้ต้องเข้าใจว่าต้องแชร์ข้อมูลใดบ้างกับ Google จึงจะลิงก์บัญชีได้
ความสามารถในการยกเลิกการลิงก์ เสนอกลไกให้ผู้ใช้ยกเลิกการลิงก์ เช่น URL ไปยังการตั้งค่าบัญชีในแพลตฟอร์มของคุณ หรือคุณอาจระบุลิงก์ไปยังบัญชี Google ที่ผู้ใช้จะจัดการบัญชีที่ลิงก์ของตนเองได้
ความสามารถในการเปลี่ยนบัญชีผู้ใช้ แนะนำวิธีให้ผู้ใช้เปลี่ยน บัญชี ซึ่งจะเป็นประโยชน์อย่างยิ่งหากผู้ใช้มีแนวโน้มที่จะมีหลายบัญชี
- หากผู้ใช้ต้องปิดหน้าจอความยินยอมเพื่อเปลี่ยนบัญชี ให้ส่งข้อผิดพลาดที่กู้คืนได้ไปยัง Google เพื่อให้ผู้ใช้สามารถลงชื่อเข้าใช้บัญชีที่ต้องการด้วยการลิงก์ OAuth
ใส่โลโก้ของคุณ แสดงโลโก้บริษัทในหน้าจอขอความยินยอม ใช้หลักเกณฑ์ด้านรูปแบบในการวางโลโก้ หากต้องการแสดงโลโก้ของ Google ด้วย โปรดดูโลโก้และเครื่องหมายการค้าของ

ขั้นตอนรหัสการให้สิทธิ์
การใช้งานเซิร์ฟเวอร์ OAuth 2.0 ของขั้นตอนรหัสการให้สิทธิ์ประกอบด้วยปลายทาง 2 รายการ ซึ่งบริการของคุณให้บริการผ่าน HTTPS ปลายทางแรกคือปลายทางการให้สิทธิ์ ซึ่งมีหน้าที่ค้นหาหรือขอความยินยอมจากผู้ใช้สำหรับการเข้าถึงข้อมูล ปลายทางการให้สิทธิ์จะแสดง UI การลงชื่อเข้าใช้ต่อผู้ใช้ที่ไม่ได้ลงชื่อเข้าใช้ไว้ก่อนหน้านี้ และบันทึกความยินยอมในการเข้าถึงที่ขอ ปลายทางที่ 2 คือปลายทางการแลกเปลี่ยนโทเค็น ซึ่งใช้ในการรับสตริงที่เข้ารหัสที่เรียกว่าโทเค็น ซึ่งให้สิทธิ์ผู้ใช้ในการเข้าถึงบริการของคุณ
เมื่อแอปพลิเคชันของ Google ต้องการเรียก API ของบริการใดบริการหนึ่งของคุณ Google จะใช้ปลายทางเหล่านี้ร่วมกันเพื่อขอสิทธิ์จากผู้ใช้ในการเรียก API เหล่านี้ในนามของผู้ใช้
เซสชันขั้นตอนรหัสการให้สิทธิ์ OAuth 2.0 ที่ Google เริ่มต้นจะมีขั้นตอนดังนี้
- Google จะเปิดปลายทางการให้สิทธิ์ในเบราว์เซอร์ของผู้ใช้ หากเริ่มขั้นตอนการดำเนินการด้วยเสียงในอุปกรณ์แบบใช้เสียงเท่านั้น Google จะโอนการดำเนินการไปยังโทรศัพท์
- ผู้ใช้ลงชื่อเข้าใช้ (หากยังไม่ได้ลงชื่อเข้าใช้) และอนุญาตให้ Google เข้าถึงข้อมูลด้วย API ของคุณ หากยังไม่ได้ให้สิทธิ์
- บริการของคุณจะสร้างรหัสการให้สิทธิ์และส่งกลับไปยัง Google โดยให้เปลี่ยนเส้นทางเบราว์เซอร์ของผู้ใช้กลับไปที่ Google พร้อมแนบรหัสการให้สิทธิ์มากับคำขอ
- Google จะส่งรหัสการให้สิทธิ์ไปยังปลายทางการแลกเปลี่ยนโทเค็น ซึ่งจะยืนยันความถูกต้องของรหัสและแสดงผลโทเค็นการเข้าถึงและโทเค็นการรีเฟรช โทเค็นการเข้าถึงคือโทเค็นที่มีอายุสั้นซึ่งบริการของคุณยอมรับเป็นข้อมูลเข้าสู่ระบบเพื่อเข้าถึง API โทเค็นการรีเฟรชเป็นโทเค็นที่มีอายุการใช้งานยาวนานซึ่ง Google จัดเก็บและใช้เพื่อขอโทเค็นการเข้าถึงใหม่ได้เมื่อโทเค็นดังกล่าวหมดอายุ
- หลังจากผู้ใช้ทำตามขั้นตอนการลิงก์บัญชีเสร็จแล้ว คำขอที่ส่งจาก Google ทุกครั้งจะมีโทเค็นการเข้าถึง
จัดการคำขอการให้สิทธิ์
เมื่อคุณต้องทำการลิงก์บัญชีโดยใช้ขั้นตอนการให้สิทธิ์ด้วยรหัส OAuth 2.0 ทาง Google จะส่งผู้ใช้ไปยังปลายทางการให้สิทธิ์พร้อมคําขอที่มีพารามิเตอร์ต่อไปนี้
พารามิเตอร์ปลายทางการให้สิทธิ์ | |
---|---|
client_id |
รหัสไคลเอ็นต์ที่คุณกำหนดให้กับ Google |
redirect_uri |
URL ที่คุณส่งการตอบกลับคำขอนี้ |
state |
ค่าการบันทึกบัญชีที่ส่งกลับไปยัง Google โดยไม่มีการเปลี่ยนแปลงใน URI การเปลี่ยนเส้นทาง |
scope |
ไม่บังคับ: ชุดสตริงขอบเขตที่คั่นด้วยเว้นวรรคซึ่งระบุข้อมูลที่ Google ขอสิทธิ์เข้าถึง |
response_type |
ประเภทของค่าที่จะแสดงในการตอบกลับ สําหรับขั้นตอนการใช้รหัสการให้สิทธิ์ OAuth 2.0 ประเภทการตอบกลับจะเป็น code เสมอ
|
user_locale |
การตั้งค่าภาษาของบัญชี Google ในรูปแบบ RFC5646 ซึ่งใช้ในการแปลเนื้อหาเป็นภาษาที่ผู้ใช้ต้องการ |
ตัวอย่างเช่น หากปลายทางการให้สิทธิ์อยู่ที่
https://myservice.example.com/auth
คำขออาจมีลักษณะดังนี้
GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID &redirect_uri=REDIRECT_URI &state=STATE_STRING &scope=REQUESTED_SCOPES &response_type=code&user_locale=LOCALE
หากต้องการให้ปลายทางการให้สิทธิ์จัดการคําขอลงชื่อเข้าใช้ ให้ทําตามขั้นตอนต่อไปนี้
- ตรวจสอบว่า
client_id
ตรงกับรหัสไคลเอ็นต์ที่คุณกำหนดให้กับ Google และredirect_uri
ตรงกับ URL เปลี่ยนเส้นทางที่ Google ระบุสำหรับบริการของคุณ การตรวจสอบเหล่านี้มีความสำคัญเพื่อป้องกันไม่ให้สิทธิ์เข้าถึงแอปไคลเอ็นต์ที่ไม่ได้ตั้งใจหรือกำหนดค่าไม่ถูกต้อง หากคุณรองรับขั้นตอน OAuth 2.0 หลายขั้นตอน ให้ตรวจสอบด้วยว่าresponse_type
เป็นcode
- ตรวจสอบว่าผู้ใช้ลงชื่อเข้าใช้บริการของคุณหรือไม่ หากผู้ใช้ไม่ได้ลงชื่อเข้าใช้ ให้ทำตามขั้นตอนการลงชื่อเข้าใช้หรือลงชื่อสมัครใช้บริการให้เสร็จสมบูรณ์
- สร้างรหัสการให้สิทธิ์สำหรับ Google เพื่อใช้เข้าถึง API รหัสการให้สิทธิ์อาจเป็นค่าสตริงใดก็ได้ แต่ต้องแสดงถึงผู้ใช้ ไคลเอ็นต์ที่ใช้โทเค็น และเวลาหมดอายุของรหัสนั้นๆ โดยไม่ซ้ำกัน และจะต้องเดาไม่ได้ โดยปกติแล้ว คุณจะต้องออกรหัสการให้สิทธิ์ที่หมดอายุหลังจากผ่านไปประมาณ 10 นาที
- ตรวจสอบว่า URL ที่ระบุโดยพารามิเตอร์
redirect_uri
อยู่ในรูปแบบต่อไปนี้https://oauth-redirect.googleusercontent.com/r/
YOUR_PROJECT_ID https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID - เปลี่ยนเส้นทางเบราว์เซอร์ของผู้ใช้ไปยัง URL ที่ระบุโดยพารามิเตอร์
redirect_uri
ใส่รหัสการให้สิทธิ์ที่คุณเพิ่งสร้างขึ้นและค่าสถานะเดิมที่ไม่มีการแก้ไขเมื่อคุณเปลี่ยนเส้นทางโดยใส่พารามิเตอร์code
และstate
ต่อท้าย ต่อไปนี้เป็นตัวอย่าง URL ที่ได้https://oauth-redirect.googleusercontent.com/r/
YOUR_PROJECT_ID ?code=AUTHORIZATION_CODE &state=STATE_STRING
จัดการคำขอแลกเปลี่ยนโทเค็น
ปลายทางการแลกเปลี่ยนโทเค็นของบริการมีหน้าที่รับผิดชอบในการแลกเปลี่ยนโทเค็น 2 ประเภท ได้แก่
- เปลี่ยนรหัสการให้สิทธิ์เป็นโทเค็นการเข้าถึงและโทเค็นการรีเฟรช
- แลกเปลี่ยนโทเค็นการรีเฟรชเป็นโทเค็นการเข้าถึง
คําขอแลกเปลี่ยนโทเค็นมีพารามิเตอร์ต่อไปนี้
พารามิเตอร์ปลายทางการแลกเปลี่ยนโทเค็น | |
---|---|
client_id |
สตริงที่ระบุว่าต้นทางของคําขอคือ Google สตริงนี้ต้องลงทะเบียนภายในระบบของคุณเป็นตัวระบุที่ไม่ซ้ำกันของ Google |
client_secret |
สตริงลับที่คุณลงทะเบียนกับ Google สําหรับบริการของคุณ |
grant_type |
ประเภทของโทเค็นที่แลกเปลี่ยน อาจเป็น authorization_code หรือ refresh_token |
code |
เมื่อเป็น grant_type=authorization_code พารามิเตอร์นี้จะเป็นตัวรหัสที่ Google ได้รับจากอุปกรณ์ปลายทางการลงชื่อเข้าใช้หรือการแลกเปลี่ยนโทเค็น |
redirect_uri |
เมื่อเป็น grant_type=authorization_code พารามิเตอร์นี้จะใช้เป็น URL ที่ใช้ในคําขอการให้สิทธิ์เริ่มต้น |
refresh_token |
เมื่อเป็น grant_type=refresh_token พารามิเตอร์นี้จะใช้เป็นโทเค็นรีเฟรชที่ Google ได้รับจากปลายทางการแลกเปลี่ยนโทเค็น |
กำหนดค่าวิธีที่ Google ส่งข้อมูลเข้าสู่ระบบไปยังเซิร์ฟเวอร์
เซิร์ฟเวอร์การให้สิทธิ์จะคาดหวังว่าจะได้รับข้อมูลเข้าสู่ระบบไคลเอ็นต์ในเนื้อหาคำขอหรือในส่วนหัวคำขอ ทั้งนี้ขึ้นอยู่กับการใช้งาน
โดยค่าเริ่มต้น Google จะส่งข้อมูลเข้าสู่ระบบในส่วนเนื้อหาคำขอ หากเซิร์ฟเวอร์การให้สิทธิ์กำหนดให้ข้อมูลเข้าสู่ระบบไคลเอ็นต์ต้องอยู่ในส่วนหัวคำขอ คุณต้องกำหนดค่าการผสานรวม Cloud-to-cloud ของคุณตามนั้น
จากรายการโปรเจ็กต์ ให้คลิกเปิดข้างโปรเจ็กต์ที่ต้องการทำงานด้วย
ในส่วน Cloud-to-Cloud ให้เลือก Develop
คลิกเปิดข้างการผสานรวม
เลื่อนลงไปที่ส่วนสิทธิ์ (ไม่บังคับ) แล้วเลือกช่องทําเครื่องหมายให้ Google ส่งรหัสไคลเอ็นต์และข้อมูลลับผ่านส่วนหัวการตรวจสอบสิทธิ์พื้นฐานของ HTTP
คลิกบันทึกเพื่อบันทึกการเปลี่ยนแปลง
เปลี่ยนรหัสการให้สิทธิ์เป็นโทเค็นการเข้าถึงและโทเค็นการรีเฟรช
หลังจากผู้ใช้ลงชื่อเข้าใช้และปลายทางการให้สิทธิ์ส่งรหัสการให้สิทธิ์ที่มีอายุสั้นๆ ไปยัง Google แล้ว Google จะส่งคําขอไปยังปลายทางการแลกเปลี่ยนโทเค็นเพื่อแลกเปลี่ยนรหัสการให้สิทธิ์เป็นโทเค็นการเข้าถึงและโทเค็นการรีเฟรช
สําหรับคําขอเหล่านี้ ค่าของ grant_type
คือ authorization_code
และค่าของ code
คือค่าของรหัสการให้สิทธิ์ที่คุณเคยให้ Google ตัวอย่างคําขอเปลี่ยนรหัสการให้สิทธิ์เป็นโทเค็นการเข้าถึงและโทเค็นการรีเฟรชมีดังนี้
POST /token HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded client_id=GOOGLE_CLIENT_ID &client_secret=GOOGLE_CLIENT_SECRET &grant_type=authorization_code&code=AUTHORIZATION_CODE &redirect_uri=REDIRECT_URI
หากต้องการแลกเปลี่ยนรหัสการให้สิทธิ์เป็นโทเค็นการเข้าถึงและโทเค็นการรีเฟรช ปลายทางการแลกเปลี่ยนโทเค็นจะตอบสนองต่อคำขอ POST
โดยทำตามขั้นตอนต่อไปนี้
- ยืนยันว่า
client_id
ระบุแหล่งที่มาของคำขอว่าเป็นแหล่งที่มาที่ได้รับอนุญาต และclient_secret
ตรงกับค่าที่คาดไว้ - ตรวจสอบว่ารหัสการให้สิทธิ์ถูกต้องและยังไม่หมดอายุ และรหัสไคลเอ็นต์ที่ระบุในคำขอตรงกับรหัสไคลเอ็นต์ที่เชื่อมโยงกับรหัสการให้สิทธิ์
- ยืนยันว่า URL ที่ระบุโดยพารามิเตอร์
redirect_uri
เหมือนกับค่าที่ใช้ในคำขอการให้สิทธิ์ครั้งแรก - หากยืนยันเกณฑ์ข้างต้นไม่ได้ทั้งหมด ให้แสดงข้อผิดพลาด HTTP 400 Bad Request พร้อม
{"error": "invalid_grant"}
เป็นเนื้อหา - หรือใช้รหัสผู้ใช้จากรหัสการให้สิทธิ์เพื่อสร้างโทเค็นรีเฟรชและโทเค็นการเข้าถึง โทเค็นเหล่านี้อาจเป็นค่าสตริงใดก็ได้ แต่ต้องแสดงถึงผู้ใช้และไคลเอ็นต์ที่ใช้โทเค็นนั้นๆ โดยไม่ซ้ำกัน และโทเค็นต้องเดาไม่ได้ สำหรับโทเค็นการเข้าถึง ให้บันทึกเวลาหมดอายุของโทเค็นด้วย ซึ่งโดยปกติแล้วคือ 1 ชั่วโมงหลังจากที่คุณออกโทเค็น โทเค็นการรีเฟรชไม่มีวันหมดอายุ
- แสดงผลออบเจ็กต์ JSON ต่อไปนี้ในเนื้อหาของการตอบกลับ HTTPS
{ "token_type": "Bearer", "access_token": "
ACCESS_TOKEN ", "refresh_token": "REFRESH_TOKEN ", "expires_in":SECONDS_TO_EXPIRATION }
Google จะจัดเก็บโทเค็นการเข้าถึงและโทเค็นการรีเฟรชสําหรับผู้ใช้ รวมถึงบันทึกการหมดอายุของโทเค็นการเข้าถึง เมื่อโทเค็นการเข้าถึงหมดอายุ Google จะใช้โทเค็นการรีเฟรชเพื่อรับโทเค็นการเข้าถึงใหม่จากปลายทางการแลกเปลี่ยนโทเค็น
แลกเปลี่ยนโทเค็นการรีเฟรชเป็นโทเค็นการเข้าถึง
เมื่อโทเค็นการเข้าถึงหมดอายุ Google จะส่งคําขอไปยังปลายทางการแลกเปลี่ยนโทเค็นเพื่อแลกเปลี่ยนโทเค็นการรีเฟรชเป็นโทเค็นการเข้าถึงใหม่
สําหรับคําขอเหล่านี้ ค่าของ grant_type
คือ refresh_token
และค่าของ refresh_token
คือค่าของโทเค็นการรีเฟรชที่คุณเคยให้สิทธิ์แก่ Google ต่อไปนี้เป็นตัวอย่างคำขอแลกเปลี่ยนโทเค็นการรีเฟรชเป็นโทเค็นการเข้าถึง
POST /token HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded client_id=GOOGLE_CLIENT_ID &client_secret=GOOGLE_CLIENT_SECRET &grant_type=refresh_token&refresh_token=REFRESH_TOKEN
หากต้องการแลกเปลี่ยนโทเค็นรีเฟรชเป็นโทเค็นการเข้าถึง ให้ปลายทางการแลกเปลี่ยนโทเค็นตอบกลับคำขอ POST
โดยทำตามขั้นตอนต่อไปนี้
- ยืนยันว่า
client_id
ระบุต้นทางคำขอเป็น Google และclient_secret
ตรงกับค่าที่คาดไว้ - ตรวจสอบว่าโทเค็นรีเฟรชถูกต้อง และรหัสไคลเอ็นต์ที่ระบุในคำขอตรงกับรหัสไคลเอ็นต์ที่เชื่อมโยงกับโทเค็นรีเฟรช
- หากยืนยันเกณฑ์ข้างต้นไม่ได้ทั้งหมด ให้แสดงข้อผิดพลาด HTTP 400 Bad Request พร้อม
{"error": "invalid_grant"}
เป็นเนื้อหา - หรือใช้รหัสผู้ใช้จากโทเค็นการรีเฟรชเพื่อสร้างโทเค็นการเข้าถึง โทเค็นเหล่านี้อาจเป็นค่าสตริงใดก็ได้ แต่ต้องแสดงถึงผู้ใช้และไคลเอ็นต์ที่ใช้โทเค็นนั้นๆ โดยไม่ซ้ำกัน และจะต้องเดาไม่ได้ สําหรับโทเค็นการเข้าถึง ให้บันทึกเวลาหมดอายุของโทเค็นด้วย ซึ่งโดยปกติแล้วจะเป็น 1 ชั่วโมงหลังจากที่คุณออกโทเค็น
- ส่งคืนออบเจ็กต์ JSON ต่อไปนี้ในเนื้อหาของคำตอบ HTTPS
{
"token_type": "Bearer",
"access_token": "ACCESS_TOKEN ",
"expires_in":SECONDS_TO_EXPIRATION
}
Handle userinfo requests
The userinfo endpoint is an OAuth 2.0 protected resource that return claims about the linked user. Implementing and hosting the userinfo endpoint is optional, except for the following use cases:
- Linked Account Sign-In with Google One Tap.
- Frictionless subscription on AndroidTV.
After the access token has been successfully retrieved from your token endpoint, Google sends a request to your userinfo endpoint to retrieve basic profile information about the linked user.
userinfo endpoint request headers | |
---|---|
Authorization header |
The access token of type Bearer. |
For example, if your userinfo endpoint is available at
https://myservice.example.com/userinfo
, a request might look like the following:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
For your userinfo endpoint to handle requests, do the following steps:
- Extract access token from the Authorization header and return information for the user associated with the access token.
- If the access token is invalid, return an HTTP 401 Unauthorized error with using the
WWW-Authenticate
Response Header. Below is an example of a userinfo error response: If a 401 Unauthorized, or any other unsuccessful error response is returned during the linking process, the error will be non-recoverable, the retrieved token will be discarded and the user will have to initiate the linking process again.HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
If the access token is valid, return and HTTP 200 response with the following JSON object in the body of the HTTPS response:
If your userinfo endpoint returns an HTTP 200 success response, the retrieved token and claims are registered against the user's Google account.{ "sub": "
USER_UUID ", "email": "EMAIL_ADDRESS ", "given_name": "FIRST_NAME ", "family_name": "LAST_NAME ", "name": "FULL_NAME ", "picture": "PROFILE_PICTURE ", }userinfo endpoint response sub
A unique ID that identifies the user in your system. email
Email address of the user. given_name
Optional: First name of the user. family_name
Optional: Last name of the user. name
Optional: Full name of the user. picture
Optional: Profile picture of the user.