การใช้เซิร์ฟเวอร์ OAuth 2.0

การผสานรวม 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:

    1. 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.
    2. 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.

This figure shows the steps for a user to link their Google account
            to your authentication system. The first screenshot shows
            user-initiated linking from your platform. The second image shows
            user sign-in to Google, while the third shows the user consent and
            confirmation for linking their Google account with your app. The
            final screenshot shows a successfully linked user account in the
            Google app.
Figure 1. Account linking user sign in to Google and consent screens.

Requirements

  1. You must communicate that the user’s account will be linked to Google, not a specific Google product like Google Home or Google Assistant.
  2. 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.
  3. 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.
  4. 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:

  1. Display Google's Privacy Policy. Include a link to Google’s Privacy Policy on the consent screen.

  2. Data to be shared. Use clear and concise language to tell the user what data of theirs Google requires and why.

  3. 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.

  4. Ability to cancel. Provide a way for users to go back or cancel, if they choose not to link.

  5. 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.

  6. 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.

  7. 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.
  8. 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 เริ่มต้นจะมีโฟลว์ดังนี้

  1. Google จะเปิดปลายทางการให้สิทธิ์ในเบราว์เซอร์ของผู้ใช้ หากโฟลว์ เริ่มต้นในอุปกรณ์ที่ใช้เสียงเท่านั้นสำหรับ Action Google จะโอน การดำเนินการไปยังโทรศัพท์
  2. ผู้ใช้จะลงชื่อเข้าใช้ (หากยังไม่ได้ลงชื่อเข้าใช้) และให้สิทธิ์ Google ในการเข้าถึงข้อมูลด้วย API ของคุณ หากยังไม่ได้ให้สิทธิ์
  3. บริการของคุณจะสร้างรหัสการให้สิทธิ์และส่งกลับไปยัง Google โดยให้เปลี่ยนเส้นทางเบราว์เซอร์ของผู้ใช้กลับไปที่ Google พร้อมแนบรหัสการให้สิทธิ์ไปกับคำขอ
  4. Google จะส่งรหัสการให้สิทธิ์ไปยังปลายทางการแลกเปลี่ยนโทเค็นของคุณ ซึ่งจะ ยืนยันความถูกต้องของรหัสและแสดงโทเค็นเพื่อการเข้าถึงและ โทเค็นการรีเฟรช โทเค็นเพื่อการเข้าถึงเป็นโทเค็นที่มีอายุสั้นซึ่งบริการของคุณ ยอมรับเป็นข้อมูลเข้าสู่ระบบเพื่อเข้าถึง API โทเค็นการรีเฟรชเป็นโทเค็นที่ใช้ได้นาน ซึ่ง Google สามารถจัดเก็บและใช้เพื่อขอโทเค็นเพื่อการเข้าถึงใหม่เมื่อโทเค็นหมดอายุ
  5. หลังจากที่ผู้ใช้ทําตามขั้นตอนการลิงก์บัญชีเสร็จแล้ว ทุกคำขอที่ส่งจาก 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

หากต้องการให้ปลายทางการให้สิทธิ์จัดการคำขอลงชื่อเข้าใช้ ให้ทำตามขั้นตอนต่อไปนี้

  1. ตรวจสอบว่า client_id ตรงกับรหัสไคลเอ็นต์ที่คุณกำหนดให้กับ Google และ redirect_uri ตรงกับ URL เปลี่ยนเส้นทางที่ Google ระบุสำหรับบริการของคุณ การตรวจสอบเหล่านี้มีความสำคัญในการป้องกันไม่ให้สิทธิ์เข้าถึงแก่แอปไคลเอ็นต์ที่ไม่ต้องการหรือกำหนดค่าไม่ถูกต้อง หากรองรับขั้นตอน OAuth 2.0 หลายขั้นตอน ให้ยืนยันด้วยว่า response_type เป็น code
  2. ตรวจสอบว่าผู้ใช้ลงชื่อเข้าใช้บริการของคุณหรือไม่ หากผู้ใช้ไม่ได้ลงชื่อเข้าใช้ ให้ดำเนินการขั้นตอนการลงชื่อเข้าใช้หรือลงชื่อสมัครใช้ของบริการให้เสร็จสมบูรณ์
  3. สร้างรหัสการให้สิทธิ์เพื่อให้ Google ใช้เข้าถึง API ของคุณ รหัสการให้สิทธิ์อาจเป็นค่าสตริงใดก็ได้ แต่ต้องแสดงถึงผู้ใช้ ไคลเอ็นต์ที่โทเค็นใช้ และเวลาหมดอายุของรหัสอย่างไม่ซ้ำกัน และต้องคาดเดาไม่ได้ โดยปกติแล้ว คุณจะออกรหัสการให้สิทธิ์ ซึ่งจะหมดอายุหลังจากผ่านไปประมาณ 10 นาที
  4. ยืนยันว่า URL ที่ระบุโดยพารามิเตอร์ redirect_uri มีรูปแบบดังนี้
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
      
  5. เปลี่ยนเส้นทางเบราว์เซอร์ของผู้ใช้ไปยัง 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ตามนั้น

ไปที่ Developer Console

  1. จากรายการโปรเจ็กต์ ให้คลิกเปิดข้างโปรเจ็กต์ที่ต้องการ ทำงานด้วย

  2. เลือกพัฒนาในส่วนคลาวด์ต่อคลาวด์

  3. คลิก Open ข้างการผสานรวม

  4. เลื่อนลงไปที่ส่วนสิทธิ์ (ไม่บังคับ) แล้วเลือก ช่องทําเครื่องหมายให้ Google ส่งรหัสไคลเอ็นต์และข้อมูลลับผ่านส่วนหัวการตรวจสอบสิทธิ์ขั้นพื้นฐานของ HTTP

  5. คลิกบันทึกเพื่อบันทึกการเปลี่ยนแปลง

แลกรหัสการให้สิทธิ์เป็นโทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรช

หลังจากที่ผู้ใช้ลงชื่อเข้าใช้และปลายทางการให้สิทธิ์ของคุณส่งรหัสการให้สิทธิ์ที่มีอายุชั่วคราว ไปยัง 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 โดยการทำตามขั้นตอนต่อไปนี้

  1. ตรวจสอบว่า client_id ระบุต้นทางของคำขอเป็นต้นทางที่ได้รับอนุญาต และ client_secret ตรงกับค่าที่คาดไว้
  2. ยืนยันว่ารหัสการให้สิทธิ์ยังใช้งานได้และไม่หมดอายุ และ รหัสไคลเอ็นต์ที่ระบุในคำขอตรงกับรหัสไคลเอ็นต์ที่เชื่อมโยงกับ รหัสการให้สิทธิ์
  3. ยืนยันว่า URL ที่ระบุโดยพารามิเตอร์ redirect_uri เหมือนกับค่าที่ใช้ในคำขอการให้สิทธิ์ครั้งแรก
  4. หากยืนยันเกณฑ์ทั้งหมดข้างต้นไม่ได้ ให้ส่งคืนข้อผิดพลาด HTTP 400 Bad Request โดยมี {"error": "invalid_grant"} เป็นเนื้อหา
  5. หรือใช้รหัสผู้ใช้จากรหัสการให้สิทธิ์เพื่อสร้างโทเค็นรีเฟรช และโทเค็นเพื่อการเข้าถึง โทเค็นเหล่านี้อาจเป็นค่าสตริงใดก็ได้ แต่ต้องแสดงถึงผู้ใช้และไคลเอ็นต์ที่โทเค็นใช้สำหรับผู้ใช้และไคลเอ็นต์นั้นๆ โดยเฉพาะ และต้องคาดเดาไม่ได้ สำหรับโทเค็นเพื่อการเข้าถึง ให้บันทึกเวลาหมดอายุของโทเค็นด้วย ซึ่งโดยปกติแล้วจะอยู่ที่ 1 ชั่วโมงหลังจากที่คุณออกโทเค็น โทเค็นการรีเฟรชไม่มีวันหมดอายุ
  6. ส่งคืนออบเจ็กต์ 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 โดยทำตามขั้นตอนต่อไปนี้

  1. ตรวจสอบว่า client_id ระบุต้นทางของคำขอเป็น Google และ client_secret ตรงกับค่าที่คาดไว้
  2. ตรวจสอบว่าโทเค็นการรีเฟรชใช้งานได้ และรหัสไคลเอ็นต์ที่ระบุใน คำขอตรงกับรหัสไคลเอ็นต์ที่เชื่อมโยงกับโทเค็นการรีเฟรช
  3. หากยืนยันเกณฑ์ทั้งหมดข้างต้นไม่ได้ ให้ส่งคืนข้อผิดพลาด HTTP 400 Bad Request โดยมี {"error": "invalid_grant"} เป็นเนื้อหา
  4. หรือใช้รหัสผู้ใช้จากโทเค็นการรีเฟรชเพื่อสร้างโทเค็นเพื่อการเข้าถึง โทเค็นเหล่านี้อาจเป็นค่าสตริงใดก็ได้ แต่ต้องแสดงถึงผู้ใช้และไคลเอ็นต์ที่โทเค็นใช้สำหรับผู้ใช้และไคลเอ็นต์นั้นๆ โดยเฉพาะ และต้องคาดเดาไม่ได้ สำหรับโทเค็นเพื่อการเข้าถึง ให้บันทึกเวลาหมดอายุของโทเค็นด้วย โดยปกติแล้วจะอยู่ที่ 1 ชั่วโมงหลังจากที่คุณออกโทเค็น
  5. ส่งคืนออบเจ็กต์ JSON ต่อไปนี้ในเนื้อหาของการตอบกลับ HTTPS
    {
    "token_type": "Bearer",
    "access_token": "ACCESS_TOKEN",
    "expires_in": SECONDS_TO_EXPIRATION
    }

จัดการคำขอ Userinfo

ปลายทาง userinfo เป็นทรัพยากรที่มีการป้องกันด้วย OAuth 2.0 ซึ่งส่งกลับการอ้างสิทธิ์เกี่ยวกับผู้ใช้ที่ลิงก์ การติดตั้งใช้งานและการโฮสต์ปลายทาง userinfo เป็นตัวเลือกที่ไม่บังคับ ยกเว้นกรณีการใช้งานต่อไปนี้

หลังจากเรียกโทเค็นเพื่อการเข้าถึงจากปลายทางของโทเค็นเรียบร้อยแล้ว 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 จัดการคำขอ ให้ทำตามขั้นตอนต่อไปนี้

  1. แยกโทเค็นเพื่อการเข้าถึงจากส่วนหัวการให้สิทธิ์ แล้วแสดงผลข้อมูลสำหรับผู้ใช้ที่เชื่อมโยงกับโทเค็นเพื่อการเข้าถึง
  2. หากโทเค็นเพื่อการเข้าถึงไม่ถูกต้อง ให้แสดงข้อผิดพลาด HTTP 401 Unauthorized ด้วยการใช้ส่วนหัวการตอบกลับ WWW-Authenticate ตัวอย่างการตอบกลับข้อผิดพลาดเกี่ยวกับ Userinfo มีดังนี้
    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: error="invalid_token",
    error_description="The Access Token expired"
    
    หากข้อผิดพลาด 401 Unauthorized หรือการตอบกลับที่ผิดพลาดอื่นๆ ที่ไม่สำเร็จในระหว่างกระบวนการลิงก์ ข้อผิดพลาดดังกล่าวจะกู้คืนไม่ได้ ระบบจะทิ้งโทเค็นที่ดึงมาและผู้ใช้จะต้องเริ่มกระบวนการลิงก์อีกครั้ง
  3. หากโทเค็นเพื่อการเข้าถึงถูกต้อง ให้แสดงผลและการตอบสนอง HTTP 200 ด้วยออบเจ็กต์ JSON ต่อไปนี้ในเนื้อหาของ HTTPS การตอบกลับ:

    {
    "sub": "USER_UUID",
    "email": "EMAIL_ADDRESS",
    "given_name": "FIRST_NAME",
    "family_name": "LAST_NAME",
    "name": "FULL_NAME",
    "picture": "PROFILE_PICTURE",
    }
    หากปลายทาง userinfo ส่งการตอบกลับที่สำเร็จ HTTP 200 ระบบจะลงทะเบียนโทเค็นที่ดึงมาและการอ้างสิทธิ์กับบัญชี Google ของผู้ใช้

    การตอบสนองของปลายทาง userinfo
    sub รหัสที่ไม่ซ้ำกันที่ระบุผู้ใช้ในระบบ
    email อีเมลของผู้ใช้
    given_name ไม่บังคับ: ชื่อของผู้ใช้
    family_name ไม่บังคับ: นามสกุลของผู้ใช้
    name ไม่บังคับ: ชื่อเต็มของผู้ใช้
    picture ไม่บังคับ: รูปโปรไฟล์ของผู้ใช้