การผสานรวม Cloud-to-cloud ทุกรายการต้องมีกลไกสำหรับ การตรวจสอบสิทธิ์ผู้ใช้
การตรวจสอบสิทธิ์ช่วยให้คุณลิงก์บัญชี Google ของผู้ใช้ กับบัญชีผู้ใช้ในระบบการตรวจสอบสิทธิ์ได้ ซึ่งจะช่วยให้คุณระบุผู้ใช้ได้เมื่อ การดำเนินการตามคำสั่งได้รับเจตนาของสมาร์ทโฮม สมาร์ทโฮมของ Google รองรับเฉพาะ OAuth ที่มี ขั้นตอนการใช้รหัสการให้สิทธิ์
หน้านี้อธิบายวิธีตั้งค่าเซิร์ฟเวอร์ OAuth 2.0 เพื่อให้ทำงานร่วมกับ การผสานรวม Cloud-to-cloud
การลิงก์บัญชี Google กับ OAuth
In the authorization code flow, you need two endpoints:
The authorization endpoint, which presents the sign-in UI to your users that aren't already signed in. The authorization endpoint also creates a short-lived authorization code to record users' consent to the requested access.
The token exchange endpoint, which is responsible for two types of exchanges:
- Exchanges an authorization code for a long-lived refresh token and a short-lived access token. This exchange happens when the user goes through the account linking flow.
 - Exchanges a long-lived refresh token for a short-lived access token. This exchange happens when Google needs a new access token because the one it had expired.
 
Design guidelines
This section describes the design requirements and recommendations for the user screen that you host for OAuth linking flows. After it's called by Google's app, your platform displays a sign in to Google page and account linking consent screen to the user. The user is directed back to Google's app after giving their consent to link accounts.
  Requirements
- You must communicate that the user’s account will be linked to Google, not a specific Google product like Google Home or Google Assistant.
 - You must have a Google authorization statement such as "By signing in, you are authorizing Google to control your devices." See the Google Device Control Authorization section of the Google Home Developer Policies.
 - You must open the Web OAuth linking page and ensure users have a clear method for signing in to their Google Account, such as fields for their username and password. Don't use the Google Sign-In (GSI) method that enables users to link without being taken to the Web OAuth Linking page. It is a violation of Google policy.
 - You must include at least one of the following items in the OAuth linking
    page to indicate the integration to which the user is linking:
    
- Company logo
 - Company name
 - Integration name
 - App icon
 
 
Recommendations
We recommend that you do the following:
Display Google's Privacy Policy. Include a link to Google’s Privacy Policy on the consent screen.
Data to be shared. Use clear and concise language to tell the user what data of theirs Google requires and why.
Clear call-to-action. State a clear call-to-action on your consent screen, such as “Agree and link.” This is because users need to understand what data they're required to share with Google to link their accounts.
Ability to cancel. Provide a way for users to go back or cancel, if they choose not to link.
Clear sign-in process. Ensure that users have a clear method for signing in to their Google Account, such as fields for their username and password or Sign in with Google.
Ability to unlink. Offer a mechanism for users to unlink, such as a URL to their account settings on your platform. Alternatively, you can include a link to Google Account where users can manage their linked account.
Ability to change user account. Suggest a method for users to switch their account(s). This is especially beneficial if users tend to have multiple accounts.
- If a user must close the consent screen to switch accounts, send a recoverable error to Google so the user can sign in to the desired account with OAuth linking.
 
Include your logo. Display your company logo on the consent screen. Use your style guidelines to place your logo. If you wish to also display Google's logo, see Logos and trademarks.
  ขั้นตอนรหัสการให้สิทธิ์
การติดตั้งใช้งานเซิร์ฟเวอร์ OAuth 2.0 ของขั้นตอนรหัสการให้สิทธิ์ประกอบด้วย ปลายทาง 2 รายการ ซึ่งบริการของคุณจะทำให้พร้อมใช้งานผ่าน HTTPS ปลายทางแรก คือปลายทางการให้สิทธิ์ ซึ่งมีหน้าที่ค้นหาหรือขอ ความยินยอมจากผู้ใช้สำหรับการเข้าถึงข้อมูล ปลายทางการให้สิทธิ์จะแสดง UI การลงชื่อเข้าใช้ต่อผู้ใช้ที่ยังไม่ได้ลงชื่อเข้าใช้ และบันทึกความยินยอมในการเข้าถึงที่ขอ ส่วนปลายทางที่ 2 คือปลายทางการแลกเปลี่ยนโทเค็น ซึ่งใช้เพื่อรับสตริงที่เข้ารหัสที่เรียกว่าโทเค็น ซึ่งให้สิทธิ์ผู้ใช้ในการเข้าถึงบริการของคุณ
เมื่อแอปพลิเคชันของ Google ต้องเรียกใช้ API ของบริการใดบริการหนึ่ง Google จะใช้ ปลายทางเหล่านี้ร่วมกันเพื่อขอสิทธิ์จากผู้ใช้ในการเรียกใช้ API เหล่านี้ ในนามของผู้ใช้
เซสชันโฟลว์ของรหัสการให้สิทธิ์ OAuth 2.0 ที่ Google เริ่มต้นจะมีโฟลว์ดังนี้
- Google จะเปิดปลายทางการให้สิทธิ์ในเบราว์เซอร์ของผู้ใช้ หากโฟลว์ เริ่มต้นในอุปกรณ์ที่ใช้เสียงเท่านั้นสำหรับ Action 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 เสมอ
     | 
  
ตัวอย่างเช่น หากปลายทางการให้สิทธิ์ของคุณพร้อมใช้งานที่
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
หากต้องการให้ปลายทางการให้สิทธิ์จัดการคำขอลงชื่อเข้าใช้ ให้ทำตามขั้นตอนต่อไปนี้
- ตรวจสอบว่า 
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ตามนั้น
จากรายการโปรเจ็กต์ ให้คลิกเปิดข้างโปรเจ็กต์ที่ต้องการ ทำงานด้วย
เลือกพัฒนาในส่วนคลาวด์ต่อคลาวด์
คลิก Open ข้างการผสานรวม
เลื่อนลงไปที่ส่วนสิทธิ์ (ไม่บังคับ) แล้วเลือก ช่องทําเครื่องหมายให้ 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 } 
จัดการคำขอ Userinfo
ปลายทาง userinfo เป็นทรัพยากรที่มีการป้องกันด้วย OAuth 2.0 ซึ่งส่งกลับการอ้างสิทธิ์เกี่ยวกับผู้ใช้ที่ลิงก์ การติดตั้งใช้งานและการโฮสต์ปลายทาง userinfo เป็นตัวเลือกที่ไม่บังคับ ยกเว้นกรณีการใช้งานต่อไปนี้
- ลงชื่อเข้าใช้บัญชีที่ลิงก์ด้วย Google One Tap
 - การติดตามที่ราบรื่นบน AndroidTV
 
หลังจากเรียกโทเค็นเพื่อการเข้าถึงจากปลายทางของโทเค็นเรียบร้อยแล้ว Google จะส่งคำขอไปยังปลายทาง userinfo เพื่อดึงข้อมูลโปรไฟล์พื้นฐานเกี่ยวกับผู้ใช้ที่ลิงก์
| ส่วนหัวของคำขอปลายทางของ userinfo | |
|---|---|
Authorization header | 
    โทเค็นเพื่อการเข้าถึงของประเภท Bearer | 
ตัวอย่างเช่น หากปลายทาง userinfo พร้อมใช้งานที่
https://myservice.example.com/userinfo คำขออาจมีลักษณะดังต่อไปนี้
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
หากต้องการให้ปลายทาง userinfo จัดการคำขอ ให้ทำตามขั้นตอนต่อไปนี้
- แยกโทเค็นเพื่อการเข้าถึงจากส่วนหัวการให้สิทธิ์ แล้วแสดงผลข้อมูลสำหรับผู้ใช้ที่เชื่อมโยงกับโทเค็นเพื่อการเข้าถึง
 - หากโทเค็นเพื่อการเข้าถึงไม่ถูกต้อง ให้แสดงข้อผิดพลาด HTTP 401 Unauthorized ด้วยการใช้ส่วนหัวการตอบกลับ 
WWW-Authenticateตัวอย่างการตอบกลับข้อผิดพลาดเกี่ยวกับ Userinfo มีดังนี้ หากข้อผิดพลาด 401 Unauthorized หรือการตอบกลับที่ผิดพลาดอื่นๆ ที่ไม่สำเร็จในระหว่างกระบวนการลิงก์ ข้อผิดพลาดดังกล่าวจะกู้คืนไม่ได้ ระบบจะทิ้งโทเค็นที่ดึงมาและผู้ใช้จะต้องเริ่มกระบวนการลิงก์อีกครั้งHTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
 หากโทเค็นเพื่อการเข้าถึงถูกต้อง ให้แสดงผลและการตอบสนอง HTTP 200 ด้วยออบเจ็กต์ JSON ต่อไปนี้ในเนื้อหาของ HTTPS การตอบกลับ:
 หากปลายทาง userinfo ส่งการตอบกลับที่สำเร็จ HTTP 200 ระบบจะลงทะเบียนโทเค็นที่ดึงมาและการอ้างสิทธิ์กับบัญชี Google ของผู้ใช้{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }การตอบสนองของปลายทาง userinfo subรหัสที่ไม่ซ้ำกันที่ระบุผู้ใช้ในระบบ emailอีเมลของผู้ใช้ given_nameไม่บังคับ: ชื่อของผู้ใช้ family_nameไม่บังคับ: นามสกุลของผู้ใช้ nameไม่บังคับ: ชื่อเต็มของผู้ใช้ pictureไม่บังคับ: รูปโปรไฟล์ของผู้ใช้