บัญชีลิงก์กันโดยใช้ขั้นตอนโดยนัยและรหัสการให้สิทธิ์ OAuth 2.0 ตามมาตรฐานอุตสาหกรรม บริการของคุณต้องรองรับปลายทางการให้สิทธิ์ที่เป็นไปตามข้อกําหนด OAuth 2.0 และโทเค็นการแลกเปลี่ยน
ในกระบวนการโดยนัย Google จะเปิดปลายทางการให้สิทธิ์ในเบราว์เซอร์ของผู้ใช้ เมื่อลงชื่อเข้าใช้สําเร็จ คุณจะส่งคืนโทเค็นเพื่อการเข้าถึงที่ใช้งานได้ยาวนานให้ Google ขณะนี้โทเค็นเพื่อการเข้าถึงนี้จะรวมอยู่ในคําขอทุกรายการที่ส่งจาก Google
ในกระบวนการรหัสการให้สิทธิ์ คุณต้องมีปลายทาง 2 จุด ได้แก่
ปลายทางการให้สิทธิ์ซึ่งจะแสดง UI การลงชื่อเข้าใช้แก่ผู้ใช้ที่ไม่ได้ลงชื่อเข้าใช้ ปลายทางการให้สิทธิ์จะสร้างรหัสการให้สิทธิ์ที่ใช้งานได้ชั่วคราวเพื่อบันทึกผู้ใช้' และให้ความยินยอมแก่การเข้าถึงที่ขอ
ปลายทาง token Exchange ซึ่งรับผิดชอบ Exchange 2 ประเภทดังนี้
- แลกเปลี่ยนรหัสการให้สิทธิ์สําหรับโทเค็นการรีเฟรชเป็นระยะเวลานานและโทเค็นเพื่อการเข้าถึงที่ใช้งานได้เป็นระยะเวลาสั้นๆ ซึ่ง Exchange นี้จะเกิดขึ้นเมื่อผู้ใช้ทําตามขั้นตอนการลิงก์บัญชี
- แลกเปลี่ยนโทเค็นการรีเฟรชเป็นระยะเวลานานสําหรับโทเค็นเพื่อการเข้าถึงเป็นระยะเวลาสั้นๆ Exchange นี้จะเกิดขึ้นเมื่อ Google ต้องการโทเค็นเพื่อการเข้าถึงใหม่เนื่องจากโทเค็นหมดอายุ
เลือกขั้นตอน OAuth 2.0
แม้ว่าขั้นตอนโดยนัยจะใช้งานง่ายกว่า แต่ Google ขอแนะนําว่าโทเค็นเพื่อการเข้าถึงที่ออกโดยขั้นตอนแบบไม่เจาะจงปลายทางจะไม่มีวันหมดอายุ เนื่องจากผู้ใช้ถูกบังคับให้ลิงก์บัญชีอีกครั้งหลังจากโทเค็นหมดอายุด้วยโฟลว์โดยนัย หากคุณจําเป็นต้องใช้โทเค็นหมดอายุเนื่องด้วยเหตุผลด้านความปลอดภัย เราขอแนะนําให้คุณใช้ขั้นตอนรหัสการให้สิทธิ์แทน
หลักเกณฑ์การออกแบบ
ส่วนนี้จะอธิบายข้อกําหนดในการออกแบบและคําแนะนําสําหรับหน้าจอผู้ใช้ซึ่งคุณโฮสต์สําหรับขั้นตอนการลิงก์ OAuth หลังจากที่แอปของ Google เรียกแล้ว #, แพลตฟอร์มจะแสดงการลงชื่อเข้าใช้หน้า Google และหน้าจอคํายินยอมในการลิงก์บัญชีแก่ผู้ใช้ ระบบจะเปลี่ยนเส้นทางผู้ใช้กลับไปยังแอปของ Google หลังจากให้ความยินยอมในการลิงก์บัญชี
![รูปนี้แสดงขั้นตอนที่ผู้ใช้ลิงก์บัญชี Google กับระบบการตรวจสอบสิทธิ์ ภาพหน้าจอแรกแสดงการลิงก์ที่ผู้ใช้เริ่มต้นจากแพลตฟอร์ม รูปภาพที่ 2 แสดงการลงชื่อเข้าใช้ Google ของผู้ใช้ ในขณะที่รูปที่ 3 แสดงคํายินยอมของผู้ใช้และการยืนยันเพื่อลิงก์บัญชี Google กับแอป ภาพหน้าจอสุดท้ายแสดงบัญชีผู้ใช้ที่ลิงก์สําเร็จในแอป Google](https://google-developers.gonglchuangl.net/static/identity/images/oauth-linking-flow.png?authuser=1&hl=th)
ข้อกำหนด
- คุณต้องแจ้งว่าบัญชีของผู้ใช้จะลิงก์กับ Google ไม่ใช่ผลิตภัณฑ์บางอย่างของ Google เช่น Google Home หรือ Google Assistant
คำแนะนำ
เราขอแนะนําให้คุณทําสิ่งต่อไปนี้
แสดงนโยบายความเป็นส่วนตัวของ Google ใส่ลิงก์ไปยังนโยบายความเป็นส่วนตัวของ Google ในหน้าจอคํายินยอม
ข้อมูลที่จะแชร์ ใช้ภาษาที่ชัดเจนและกระชับเพื่อบอกผู้ใช้ว่า Google ต้องการข้อมูลใดและเพราะเหตุใด
คํากระตุ้นการตัดสินใจที่ชัดเจน ระบุคํากระตุ้นการตัดสินใจที่ชัดเจนบนหน้าจอคํายินยอม เช่น "ยอมรับและลิงก์" เนื่องจากผู้ใช้ต้องเข้าใจว่าข้อมูลใดที่ตนเองต้องแชร์กับ Google เพื่อลิงก์บัญชีของตน
ความสามารถในการยกเลิก ระบุวิธีให้ผู้ใช้ย้อนกลับหรือยกเลิกได้หากผู้ใช้เลือกที่จะไม่ลิงก์
ล้างกระบวนการลงชื่อเข้าใช้ ตรวจสอบว่าผู้ใช้มีวิธีลงชื่อเข้าใช้บัญชี Google ที่ชัดเจน เช่น ช่องสําหรับชื่อผู้ใช้และรหัสผ่าน หรือลงชื่อเข้าใช้ด้วย Google
ความสามารถในการยกเลิกการลิงก์ มีกลไกให้ผู้ใช้ยกเลิกการลิงก์ เช่น URL ไปยังการตั้งค่าบัญชีในแพลตฟอร์ม หรือใส่ลิงก์ไปยังบัญชี Google ก็ได้ ซึ่งผู้ใช้จะจัดการบัญชีที่ลิงก์ไว้ได้
ความสามารถในการเปลี่ยนบัญชีผู้ใช้ แนะนําวิธีการให้ผู้ใช้เปลี่ยนบัญชี ซึ่งจะเป็นประโยชน์อย่างยิ่งหากผู้ใช้มีแนวโน้มที่จะมีหลายบัญชี
- หากผู้ใช้ต้องปิดหน้าจอคํายินยอมเพื่อสลับบัญชี ให้ส่งข้อผิดพลาดที่กู้คืนได้ไปยัง Google เพื่อให้ผู้ใช้ลงชื่อเข้าใช้บัญชีที่ต้องการได้ด้วยการลิงก์ OAuth และขั้นตอนโดยนัย
ใส่โลโก้ของคุณ แสดงโลโก้บริษัทในหน้าจอคํายินยอม ใช้หลักเกณฑ์รูปแบบในการวางโลโก้ หากต้องการแสดงโลโก้ Google' ด้วย โปรดดูโลโก้และเครื่องหมายการค้า
![ตัวอย่างนี้แสดงตัวอย่างหน้าจอลงชื่อเข้าใช้และคํายินยอมของผู้ใช้พร้อมคําขอราคาเสนอของข้อกําหนดและคําแนะนําแต่ละรายการที่ควรทําตามเมื่อออกแบบหน้าจอลงชื่อเข้าใช้และคํายินยอมของผู้ใช้](https://google-developers.gonglchuangl.net/static/identity/images/oauth-linking-consent.png?authuser=1&hl=th)
创建项目
如需创建项目以使用帐号关联,请按以下步骤操作:
- Go to the Google API Console.
- คลิก สร้างโครงการ
- ป้อนชื่อหรือยอมรับคำแนะนำที่สร้างขึ้น
- ยืนยันหรือแก้ไขฟิลด์ที่เหลือ
- คลิก สร้าง
วิธีดูรหัสโครงการของคุณ:
- Go to the Google API Console.
- ค้นหาโครงการของคุณในตารางบนหน้า Landing Page รหัสโครงการจะปรากฏในคอลัมน์ ID
配置 OAuth 权限请求页面
Google 帐号关联流程包括一个同意屏幕,用于告知用户请求访问其数据的应用、用户要求的数据类型以及适用的条款。您需要先配置 OAuth 权限请求页面,然后才能生成 Google API 客户端 ID。
- 打开 Google API 控制台的 OAuth 同意屏幕页面。
- 如果出现提示,请选择您刚刚创建的项目。
在“OAuth 同意屏幕”页面上,填写表单,然后点击“保存”按钮。
应用名称:请求用户同意的应用的名称。该名称应准确反映您的应用,并与用户在别处看到的应用名称保持一致。应用名称将显示在帐号关联同意屏幕上。
应用徽标:同意屏幕上的图片,有助于用户识别您的应用。徽标会显示在帐号关联同意屏幕和帐号设置中
支持电子邮件地址:供用户就其同意情况与您联系。
Google API 的范围:范围允许您的应用访问用户的私有 Google 数据。对于 Google 帐号关联用例,默认范围(电子邮件、个人资料、OpenID)就足够了,您无需添加任何敏感范围。最佳做法一般是在需要访问时逐步请求作用域,而不是预先请求。了解详情。
已获授权的网域:为保护您和您的用户,Google 仅允许使用 OAuth 进行身份验证的应用使用已获授权的网域。您应用的链接必须托管在已获授权的网域上。了解详情。
应用首页链接:您的应用的首页。必须托管在已获授权的网域上。
应用隐私权政策链接:在 Google 帐号关联同意屏幕上显示。必须托管在已获授权的网域上。
应用服务条款链接(可选):必须托管在已获授权的网域上。
图 1. 一款虚构应用 Tunery 的 Google 帐号关联同意屏幕
查看“验证状态”。如果您的申请需要验证,请点击“提交验证”按钮,提交您的申请。如需了解详情,请参阅 OAuth 验证要求。
ใช้งานเซิร์ฟเวอร์ OAuth
OAuth การใช้งานเซิร์ฟเวอร์ 2.0 ของการไหลของรหัสอนุมัติประกอบด้วยสอง endpoints ซึ่งบริการของคุณทำให้สามารถใช้ได้โดย HTTPS จุดสิ้นสุดแรกคือจุดสิ้นสุดการอนุญาต ซึ่งมีหน้าที่ในการค้นหาหรือขอรับความยินยอมจากผู้ใช้ในการเข้าถึงข้อมูล ปลายทางการให้สิทธิ์แสดง UI การลงชื่อเข้าใช้แก่ผู้ใช้ของคุณที่ยังไม่ได้ลงชื่อเข้าใช้และบันทึกความยินยอมในการเข้าถึงที่ร้องขอ จุดสิ้นสุดที่สองคือจุดสิ้นสุดการแลกเปลี่ยนโทเค็น ซึ่งใช้เพื่อรับสตริงที่เข้ารหัส ซึ่งเรียกว่าโทเค็น ซึ่งอนุญาตให้ผู้ใช้เข้าถึงบริการของคุณ
เมื่อแอปพลิเคชันของ 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
จัดการคำขอแลกเปลี่ยนโทเค็น
จุดสิ้นสุดการแลกเปลี่ยนโทเค็นของบริการของคุณรับผิดชอบการแลกเปลี่ยนโทเค็นสองประเภท:
- แลกเปลี่ยนรหัสการอนุญาตสำหรับโทเค็นการเข้าถึงและรีเฟรชโทเค็น
- แลกเปลี่ยนโทเค็นการรีเฟรชสำหรับโทเค็นการเข้าถึง
คำขอแลกเปลี่ยนโทเค็นรวมถึงพารามิเตอร์ต่อไปนี้:
พารามิเตอร์ปลายทางการแลกเปลี่ยนโทเค็น | |
---|---|
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 จะส่งคำขอไปยังปลายทางการแลกเปลี่ยนโทเค็นของคุณเพื่อแลกเปลี่ยนรหัสการให้สิทธิ์สำหรับโทเค็นการเข้าถึงและโทเค็นการรีเฟรช
สำหรับการร้องขอเหล่านี้ค่าของ 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 ข้อผิดพลาดการร้องขอไม่ถูกกับ
{"error": "invalid_grant"}
ในขณะที่ร่างกาย - มิฉะนั้น ให้ใช้ ID ผู้ใช้จากรหัสการให้สิทธิ์เพื่อสร้างโทเค็นการรีเฟรชและโทเค็นการเข้าถึง โทเค็นเหล่านี้สามารถเป็นค่าสตริงใดๆ ก็ได้ แต่ต้องแสดงถึงผู้ใช้และไคลเอ็นต์ที่โทเค็นนั้นไม่ซ้ำกัน และต้องไม่สามารถคาดเดาได้ สำหรับโทเค็นการเข้าถึง ให้บันทึกเวลาหมดอายุของโทเค็นด้วย ซึ่งโดยทั่วไปคือหนึ่งชั่วโมงหลังจากที่คุณออกโทเค็น โทเค็นการรีเฟรชไม่มีวันหมดอายุ
- กลับวัตถุ 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
เพื่อแลกเปลี่ยนรีเฟรช token สำหรับโทเค็นการเข้าถึงการตอบสนองแลกเปลี่ยนปลายทางโทเค็นของคุณเพื่อ POST
คำขอโดยการดำเนินการตามขั้นตอนต่อไปนี้:
- ตรวจสอบว่า
client_id
ระบุแหล่งที่มาร้องขอ Google, และที่client_secret
ตรงกับค่าที่คาดหวัง - ตรวจสอบว่าโทเค็นการรีเฟรชถูกต้อง และรหัสไคลเอ็นต์ที่ระบุในคำขอตรงกับรหัสไคลเอ็นต์ที่เชื่อมโยงกับโทเค็นการรีเฟรช
- ถ้าคุณไม่สามารถตรวจสอบได้ทุกเกณฑ์ข้างต้นกลับ HTTP 400 ข้อผิดพลาดการร้องขอไม่ถูกกับ
{"error": "invalid_grant"}
ในขณะที่ร่างกาย - มิฉะนั้น ให้ใช้ ID ผู้ใช้จากโทเค็นการรีเฟรชเพื่อสร้างโทเค็นการเข้าถึง โทเค็นเหล่านี้สามารถเป็นค่าสตริงใดๆ ก็ได้ แต่ต้องแสดงถึงผู้ใช้และไคลเอ็นต์ที่โทเค็นนั้นไม่ซ้ำกัน และต้องไม่สามารถคาดเดาได้ สำหรับโทเค็นการเข้าถึง ให้บันทึกเวลาหมดอายุของโทเค็นด้วย โดยทั่วไปแล้วหนึ่งชั่วโมงหลังจากที่คุณออกโทเค็น
- ส่งคืนวัตถุ JSON ต่อไปนี้ในเนื้อหาของการตอบสนอง HTTPS:
{ "token_type": "Bearer", "access_token": " ACCESS_TOKEN ", "expires_in": SECONDS_TO_EXPIRATION }
จัดการคำขอข้อมูลผู้ใช้
ปลายทาง UserInfo เป็นทรัพยากร OAuth 2.0 การป้องกันว่าการเรียกร้องผลตอบแทนที่เกี่ยวกับผู้ใช้ที่เชื่อมโยง การใช้งานและโฮสต์จุดสิ้นสุดข้อมูลผู้ใช้เป็นทางเลือก ยกเว้นกรณีการใช้งานต่อไปนี้:
- บัญชีที่เชื่อมโยงเข้าสู่ระบบ กับ Google หนึ่งแตะ
- สมัครสมาชิกฝืด บนแอนดรอยด์ทีวี
หลังจากที่ดึงโทเค็นเพื่อการเข้าถึงจากปลายทางโทเค็นของคุณสำเร็จแล้ว Google จะส่งคำขอไปยังปลายทางข้อมูลผู้ใช้ของคุณเพื่อดึงข้อมูลโปรไฟล์พื้นฐานเกี่ยวกับผู้ใช้ที่เชื่อมโยง
ส่วนหัวคำขอปลายทางข้อมูลผู้ใช้ | |
---|---|
Authorization header | โทเค็นการเข้าถึงของประเภท Bearer |
ตัวอย่างเช่นถ้าปลายทางของคุณ UserInfo สามารถใช้ได้ที่ https://myservice.example.com/userinfo
คำขออาจมีลักษณะดังต่อไปนี้:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
เพื่อให้ปลายทางข้อมูลผู้ใช้ของคุณจัดการกับคำขอ ให้ทำตามขั้นตอนต่อไปนี้:
- แยกโทเค็นการเข้าถึงออกจากส่วนหัวการให้สิทธิ์และส่งคืนข้อมูลสำหรับผู้ใช้ที่เชื่อมโยงกับโทเค็นการเข้าถึง
- ถ้าโทเค็นการเข้าถึงไม่ถูกต้องกลับ HTTP 401 ข้อผิดพลาดไม่ได้รับอนุญาตในการใช้
WWW-Authenticate
ตอบสนองส่วนหัว ด้านล่างนี้เป็นตัวอย่างของการตอบสนองต่อข้อผิดพลาด UserInfo นี้:HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
ถ้า 401 ไม่ได้รับอนุญาตหรือการตอบสนองต่อข้อผิดพลาดไม่ประสบความสำเร็จอื่น ๆ จะถูกส่งกลับในระหว่างขั้นตอนการเชื่อมโยงข้อผิดพลาดจะไม่สามารถกู้คืนโทเค็นที่ดึงจะถูกยกเลิกและผู้ใช้จะต้อง เพื่อเริ่มกระบวนการเชื่อมโยงอีกครั้ง ถ้าโทเค็นการเข้าถึงที่ถูกต้องผลตอบแทนและ 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
ID เฉพาะที่ระบุผู้ใช้ในระบบของคุณ email
ที่อยู่อีเมลของผู้ใช้ given_name
ตัวเลือก: ชื่อจริงของผู้ใช้ family_name
ตัวเลือก: นามสกุลของผู้ใช้ name
ตัวเลือก: ชื่อเต็มของผู้ใช้ picture
รูปโปรไฟล์ของผู้ใช้ตัวเลือก:
การตรวจสอบการติดตั้งใช้งาน
คุณสามารถตรวจสอบการดำเนินงานของคุณโดยใช้ OAuth 2.0 สนามเด็กเล่น เครื่องมือ
ในเครื่องมือ ให้ทำตามขั้นตอนต่อไปนี้:
- คลิกการกำหนดค่า เพื่อเปิดหน้าต่าง OAuth 2.0 การกำหนดค่า
- ในด้านการไหล OAuth เลือกฝั่งไคลเอ็นต์
- ในฟิลด์ OAuth ปลายทางเลือกที่กำหนดเอง
- ระบุตำแหน่งข้อมูล OAuth 2.0 และรหัสไคลเอ็นต์ที่คุณกำหนดให้กับ Google ในช่องที่เกี่ยวข้อง
- ในขั้นตอนที่ 1 ส่วนที่ไม่ได้เลือกขอบเขตใด ๆ ของ Google ให้ปล่อยฟิลด์นี้ว่างไว้หรือพิมพ์ขอบเขตที่ถูกต้องสำหรับเซิร์ฟเวอร์ของคุณ (หรือสตริงที่กำหนดเองหากคุณไม่ได้ใช้ขอบเขต OAuth) เมื่อคุณทำเสร็จแล้วคลิกอนุญาต APIs
- ในขั้นตอนที่ 2 และขั้นตอนที่ 3 ส่วนไปไหลผ่าน OAuth 2.0 และตรวจสอบว่าแต่ละขั้นตอนการทำงานตามที่ตั้งใจไว้
คุณสามารถตรวจสอบการดำเนินงานของคุณโดยใช้ บัญชี Google เชื่อมโยงการสาธิต เครื่องมือ
ในเครื่องมือ ให้ทำตามขั้นตอนต่อไปนี้:
- คลิกเข้าสู่ระบบด้วยปุ่ม Google
- เลือกบัญชีที่คุณต้องการเชื่อมโยง
- ป้อนรหัสบริการ
- เลือกป้อนขอบเขตอย่างน้อยหนึ่งขอบเขตที่คุณจะร้องขอการเข้าถึง
- คลิกเริ่มการสาธิต
- เมื่อได้รับแจ้ง ให้ยืนยันว่าคุณอาจยินยอมและปฏิเสธคำขอเชื่อมโยง
- ยืนยันว่าคุณถูกเปลี่ยนเส้นทางไปยังแพลตฟอร์มของคุณ