หน้านี้อธิบายวิธีเชื่อมต่อแอป Google Chat กับบริการ หรือเครื่องมือภายนอก Google Chat แม้ว่าแอป Chat จะมีประสิทธิภาพในตัวของมันเอง แต่ก็มักจะทำงานร่วมกับระบบอื่นๆ และต้องใช้แอปพลิเคชันคู่กันเพื่อเชื่อมต่อบัญชี ให้สิทธิ์เข้าถึงข้อมูล แสดงข้อมูลเพิ่มเติม หรือกำหนดค่าค่ากำหนดของผู้ใช้
หากต้องการตรวจสอบสิทธิ์ผู้ใช้ด้วยบริการของบุคคลที่สามหรือโฟลว์ OAuth แอป Chat จะทำตามขั้นตอนต่อไปนี้
- ตรวจหาเมื่อต้องมีการให้สิทธิ์หรือการกำหนดค่า
- แสดงการ์ดการให้สิทธิ์พื้นฐานที่แจ้งให้ผู้ใช้ ลงชื่อเข้าใช้หรือกำหนดค่าบริการ
- เปลี่ยนเส้นทางไปยัง URI การดำเนินการเสร็จสมบูรณ์เพื่อให้ Google Chat ลองโต้ตอบเดิมอีกครั้งโดยอัตโนมัติหลังจากที่ผู้ใช้ดำเนินการ ให้สิทธิ์เสร็จสมบูรณ์
ข้อกำหนดเบื้องต้น
HTTP
แอป Google Chat ที่รับและตอบสนองต่อการโต้ตอบของผู้ใช้ หากต้องการสร้าง ให้ทำตามการเริ่มต้นใช้งาน HTTP
Apps Script
แอป Google Chat ที่รับและตอบสนองต่อการโต้ตอบของผู้ใช้ หากต้องการสร้าง ให้ทำตามการเริ่มต้นใช้งาน Apps Script อย่างรวดเร็ว
ตรวจหาว่าต้องมีการให้สิทธิ์
เมื่อโต้ตอบกับแอปใน Chat ผู้ใช้อาจไม่ได้รับอนุญาตให้เข้าถึงทรัพยากรที่ได้รับการปกป้องด้วยเหตุผลหลายประการ เช่น เหตุผลต่อไปนี้
- ยังไม่ได้สร้างโทเค็นเพื่อการเข้าถึงเพื่อเชื่อมต่อกับบริการของบุคคลที่สาม หรือโทเค็นหมดอายุแล้ว
- โทเค็นเพื่อการเข้าถึงไม่ครอบคลุมทรัพยากรที่ขอ
- โทเค็นเพื่อการเข้าถึงไม่ครอบคลุมขอบเขตที่คำขอต้องระบุ
แอปใน Chat ควรตรวจหาเคสเหล่านี้เพื่อให้ผู้ใช้ ลงชื่อเข้าใช้และให้สิทธิ์เข้าถึงบริการของคุณได้
หากคุณสร้างใน Apps Script คุณสามารถใช้ไลบรารี OAuth2 สำหรับ Google Apps Script
(หรือเวอร์ชัน OAuth1)
ซึ่งฟังก์ชัน hasAccess จะตรวจสอบว่าผู้ใช้ได้ให้สิทธิ์เข้าถึง
บริการหรือไม่ อีกทางหนึ่ง เมื่อใช้คำขอ
UrlFetchApp.fetch
คุณสามารถตั้งค่าพารามิเตอร์ muteHttpExceptions เป็น true เพื่อตรวจสอบ
โค้ดตอบกลับและเนื้อหาในออบเจ็กต์ HttpResponse ที่ส่งคืน
แจ้งผู้ใช้ด้วยบัตรการให้สิทธิ์พื้นฐาน
เมื่อแอป Chat ตรวจพบว่าต้องมีการให้สิทธิ์หรือ
การกำหนดค่า ให้ส่งคืนAuthorizationErrorการตอบกลับเพื่อแสดง
การ์ดการให้สิทธิ์พื้นฐานแบบส่วนตัวแก่ผู้ใช้
รูปภาพต่อไปนี้แสดงตัวอย่างบัตรการให้สิทธิ์พื้นฐานของ Google
หากต้องการแจ้งให้ผู้ใช้ทราบด้วยบัตรการให้สิทธิ์พื้นฐาน ให้แสดงออบเจ็กต์ AuthorizationError ดังนี้
HTTP
ส่งคืนการตอบกลับ JSON ต่อไปนี้
{
"basic_authorization_prompt": {
"authorization_url": "<var>AUTHORIZATION_URL</var>",
"resource": "<var>RESOURCE_DISPLAY_NAME</var>"
}
}
Apps Script
CardService.newAuthorizationException()
.setAuthorizationUrl('<var>AUTHORIZATION_URL</var>')
.setResourceDisplayName('<var>RESOURCE_DISPLAY_NAME</var>')
.throwException();
แทนที่ค่าต่อไปนี้
AUTHORIZATION_URL: HTTPS URL สำหรับเว็บแอปที่จัดการการตรวจสอบสิทธิ์ การให้สิทธิ์ หรือการกำหนดค่าRESOURCE_DISPLAY_NAME: ชื่อที่แสดงสำหรับ ทรัพยากรหรือบริการที่ได้รับการปกป้อง ชื่อนี้จะแสดงต่อผู้ใช้ใน ข้อความแจ้งการให้สิทธิ์ เช่น หากRESOURCE_DISPLAY_NAMEของคุณคือExample Accountข้อความแจ้งจะระบุว่าแอปต้องได้รับการอนุมัติเพื่อเข้าถึงExample Accountของคุณ
ดำเนินการตามคำขอการกำหนดค่าให้เสร็จสมบูรณ์
ใน Chat ผู้ใช้สามารถดำเนินการให้สิทธิ์ให้เสร็จสมบูรณ์และ ให้ Chat ลองโต้ตอบเดิมอีกครั้งโดยอัตโนมัติโดยไม่ต้อง รีเฟรชด้วยตนเอง Chat รองรับการลองใหม่โดยอัตโนมัติหากทริกเกอร์คือข้อความ เพิ่มลงในพื้นที่ทำงาน หรือคำสั่งแอป
สำหรับทริกเกอร์เหล่านี้ แอป Chat จะได้รับ
URI การเปลี่ยนเส้นทางเมื่อดำเนินการเสร็จสมบูรณ์ (configCompleteRedirectUri / completeRedirectUri) ใน
เพย์โหลดของเหตุการณ์
- ข้อความ:
chat.messagePayload.configCompleteRedirectUri - เพิ่มลงในพื้นที่ทำงาน:
chat.addedToSpacePayload.configCompleteRedirectUri - คำสั่งแอป:
chat.appCommandPayload.configCompleteRedirectUri
คุณต้องเข้ารหัส URI การเปลี่ยนเส้นทางนี้ใน <var>AUTHORIZATION_URL</var> และ
เปลี่ยนเส้นทางเบราว์เซอร์ของผู้ใช้ไปยัง URI นี้หลังจากขั้นตอนการให้สิทธิ์เสร็จสมบูรณ์
การเปลี่ยนเส้นทางไปยัง URL นี้จะส่งสัญญาณไปยัง Google Chat ว่าคำขอการให้สิทธิ์หรือ
การกำหนดค่าได้รับการดำเนินการแล้ว
เมื่อเปลี่ยนเส้นทางผู้ใช้ไปยัง URI การเปลี่ยนเส้นทางเมื่อเสร็จสมบูรณ์ที่ระบุในเพย์โหลดของเหตุการณ์เดิมได้สำเร็จ Google Chat จะทำตามขั้นตอนต่อไปนี้
- ลบข้อความแจ้งการให้สิทธิ์ส่วนตัวที่แสดงต่อผู้ใช้ที่เริ่มการดำเนินการ
- แปลงข้อความต้นฉบับเป็นแบบสาธารณะเพื่อให้สมาชิกคนอื่นๆ ในพื้นที่ทำงานเห็น
- ส่งออบเจ็กต์เหตุการณ์เดิมไปยังแอป Chat เป็นครั้งที่ 2
หากคุณไม่เปลี่ยนเส้นทางไปยัง URI เปลี่ยนเส้นทางเมื่อดำเนินการเสร็จ ผู้ใช้จะยังคง ทำขั้นตอนการให้สิทธิ์ให้เสร็จสมบูรณ์ได้ แต่ Google Chat จะไม่ลองดำเนินการ การดำเนินการก่อนหน้าอีกครั้งโดยอัตโนมัติ และผู้ใช้จะต้องเรียกใช้ แอป Chat อีกครั้งด้วยตนเอง
การเข้าชม URI การเปลี่ยนเส้นทางเมื่อดำเนินการเสร็จสมบูรณ์จะส่งผลต่อการโต้ตอบของผู้ใช้เพียงครั้งเดียว หากผู้ใช้ส่งข้อความถึงแอป Chat หลายครั้งและได้รับพรอมต์หลายรายการ การทำกระบวนการตรวจสอบสิทธิ์และการกำหนดค่าให้เสร็จสมบูรณ์สำหรับพรอมต์รายการเดียวจะลองโต้ตอบนั้นอีกครั้งเท่านั้น
ตรวจสอบสิทธิ์ผู้ใช้ Chat นอก Chat
เมื่อลิงก์ไปยัง URL ภายนอก Chat (เช่น เว็บคอลแบ็ก OAuth) คุณมักจะต้องเชื่อมโยงเซสชันเว็บภายนอกกับข้อมูลประจำตัวผู้ใช้ใน Chat เราขอแนะนำให้คุณปกป้องเว็บแอปปลายทางด้วยการลงชื่อเข้าใช้ด้วย Google
ใช้โทเค็นข้อมูลประจำตัว
ที่ออกให้ระหว่างการลงชื่อเข้าใช้เพื่อรับรหัสผู้ใช้ sub การอ้างสิทธิ์มีรหัส Google ที่ไม่ซ้ำกันของผู้ใช้
และเชื่อมโยงกับชื่อทรัพยากรผู้ใช้ (chat.user.name)
จาก Google Chat ได้
หากต้องการเชื่อมโยงsubการอ้างสิทธิ์กับชื่อทรัพยากร users/{user} ของ Google Chat
ให้เพิ่ม users/ ไว้หน้าค่าการอ้างสิทธิ์ sub เช่น subค่าการอ้างสิทธิ์
ของ 123 จะสอดคล้องกับ users/123 ในออบเจ็กต์เหตุการณ์ที่ส่งไปยังแอปแชท
ตัวอย่างโค้ด
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่แอป Chat สามารถขอข้อมูลเข้าสู่ระบบ OAuth2 แบบออฟไลน์โดยใช้การ์ดการให้สิทธิ์พื้นฐาน จัดเก็บ ไว้ในฐานข้อมูล เปลี่ยนเส้นทางไปยัง URI ที่เสร็จสมบูรณ์ และทำการเรียก API ด้วยการตรวจสอบสิทธิ์ผู้ใช้
Node.js
Python
Java
Apps Script
หัวข้อที่เกี่ยวข้อง
- รับและตอบสนองต่อการโต้ตอบของผู้ใช้
- ตรวจสอบสิทธิ์และให้สิทธิ์แอป Google Chat และคำขอ Google Chat API
- เชื่อมต่อส่วนเสริมของ Google Workspace กับบริการของบุคคลที่สาม
แอป Chat ที่ไม่ใช่ส่วนเสริม: เชื่อมต่อแอป Chat กับบริการและเครื่องมืออื่นๆ
หากคุณดูแลแอป Chat ที่ไม่ใช่ส่วนเสริมของ Google Workspace แอป Chat จะขอการกำหนดค่าโดยใช้ actionResponse ประเภท REQUEST_CONFIG และอ่าน configCompleteRedirectUrl จากออบเจ็กต์ระดับบนสุด Event
หากต้องการอัปเกรดแอป Chat ที่ไม่ใช่ส่วนเสริมเป็นเฟรมเวิร์กส่วนเสริมของ Google Workspace โปรดดูหัวข้อแปลงแอป Google Chat เป็นส่วนเสริมของ Google Workspace
ขอการกำหนดค่าจากผู้ใช้ในแอป Chat ที่ไม่ใช่ส่วนเสริม
ในแอป Chat ที่ไม่ใช่ ส่วนเสริม ให้แสดง URL การกำหนดค่าแก่ผู้ใช้ในรูปแบบต่อไปนี้
{
"actionResponse": {
"type": "REQUEST_CONFIG",
"url": "CONFIGURATION_URL"
}
}
ซึ่งจะบอกให้ Google Chat แสดงพรอมต์ส่วนตัวแก่ผู้ใช้ โดยที่
CONFIGURATION_URL เป็นลิงก์ที่ผู้ใช้จะไปเพื่อรับการ
ตรวจสอบสิทธิ์ การให้สิทธิ์ หรือการกำหนดค่าเพิ่มเติม REQUEST_CONFIG การตอบกลับจะ
ใช้ร่วมกับข้อความตอบกลับปกติไม่ได้ ระบบจะ
ไม่สนใจข้อความ การ์ด หรือแอตทริบิวต์อื่นๆ
ส่งคำขอกำหนดค่าในแอป Chat ที่ไม่ใช่ส่วนเสริม
การโต้ตอบทุกครั้งของ MESSAGE, ADDED_TO_SPACE และ APP_COMMAND
Event ที่แอป
แชทที่ไม่ใช่ส่วนเสริม
ได้รับจะมีฟิลด์ระดับบนสุด configCompleteRedirectUrl เข้ารหัส URL นี้ใน URL การกำหนดค่าและเปลี่ยนเส้นทางผู้ใช้ไปยัง URL นี้เมื่อดำเนินการเสร็จสิ้น เพื่อให้ Google Chat ลบพรอมต์ แปลงข้อความต้นฉบับเป็นสาธารณะ และส่งเหตุการณ์การโต้ตอบเดิมไปยังแอป Chat ของคุณอีกครั้ง
ดูตัวอย่างการใช้งานได้ที่ตัวอย่างแอปการเชื่อมต่อ Node.js และตัวอย่างแอปการตรวจสอบสิทธิ์ MyProfile ของ Python ใน GitHub